Refer to Image operation in thinkphp3.2.3
https://www. kancloud.cn/manual/thinkphp/1878
Does not depend on any framework
Under normal circumstances, the gd library will be installed
If you need Imagick, please install https://pecl.php. net/package/imagick
Installation
composer require whereof/think-image
Instantiation class library
$image = new \whereof\ThinkImage\Image();
The GD library is used by default for image operations. If you need to use the Imagick library for operation, you need Change to:
$image = new \whereof\ThinkImage\Image(\Think\Image::IMAGE_IMAGICK); // 或者采用 $image = new \whereof\ThinkImage\Image('Imagick');
Image operation
Let’s take a look at how to use the basic image operation function.
Open the image file
Assume there is a 1.jpg file under the current entry file directory
Use the open method to open the image file for related operations:
$image = \whereof\ThinkImage\Image(); $image->open('./1.jpg');
It can also be simplified to the following method:
$image = new \whereof\ThinkImage\Image(\whereof\ThinkImage\Image::IMAGE_GD,'./1.jpg'); // GD库 // 或者 $image = new \whereof\ThinkImage\Image(\whereof\ThinkImage\Image::IMAGE_IMAGICK,'./1.jpg'); // imagick库
Get image information
You can get the information of opening the picture, including image size, type, etc., for example:
$width = $image->width(); // 返回图片的宽度 $height = $image->height(); // 返回图片的高度 $type = $image->type(); // 返回图片的类型 $mime = $image->mime(); // 返回图片的mime类型 $size = $image->size(); // 返回图片的尺寸数组 0 图片宽度 1 图片高度
Crop picture
Use crop and save methods to complete the image cropping function.
//将图片裁剪为400x400并保存为corp.jpg $image->crop(400, 400)->save('./crop.jpg');
Supports cropping starting from a certain coordinate, for example, starting from (100, 30):
//将图片裁剪为400x400并保存为corp.jpg $image->crop(400, 400,100,30)->save('./crop.jpg');
Generate thumbnails
Use the thumb method to generate thumbnails
// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg $image->thumb(150, 150)->save('./thumb.jpg');
can support other types of thumbnail generation. The settings include the following constants or corresponding numbers of \whereof\ThinkImage\Image
:
IMAGE_THUMB_SCALE = 1 ; //等比例缩放类型 IMAGE_THUMB_FILLED = 2 ; //缩放后填充类型 IMAGE_THUMB_CENTER = 3 ; //居中裁剪类型 IMAGE_THUMB_NORTHWEST = 4 ; //左上角裁剪类型 IMAGE_THUMB_SOUTHEAST = 5 ; //右下角裁剪类型 IMAGE_THUMB_FIXED = 6 ; //固定尺寸缩放类型
Centered cropping
// 生成一个居中裁剪为150*150的缩略图并保存为thumb.jpg $image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_CENTER)->save('./thumb.jpg');
Upper left corner crop
$image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_NORTHWEST)->save('./thumb.jpg');
Scale filling
$image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_FILLED)->save('./thumb.jpg');
Fixed size
$image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_FIXED)->save('./thumb.jpg');
Add image watermark
//将图片裁剪为440x440并保存为corp.jpg $image->crop(440, 440)->save('./crop.jpg'); // 给裁剪后的图片添加图片水印(水印文件位于./logo.png),位置为右下角,保存为water.gif $image->water('./logo.png')->save("water.gif"); // 给原图添加水印并保存为water_o.gif(需要重新打开原图) $image->open('./1.jpg')->water('./logo.png')->save("water_o.gif");
The second parameter of the water method represents the watermark Position, you can pass in the following Think\Imag class constants or corresponding numbers:
IMAGE_WATER_NORTHWEST = 1 ; //左上角水印 IMAGE_WATER_NORTH = 2 ; //上居中水印 IMAGE_WATER_NORTHEAST = 3 ; //右上角水印 IMAGE_WATER_WEST = 4 ; //左居中水印 IMAGE_WATER_CENTER = 5 ; //居中水印 IMAGE_WATER_EAST = 6 ; //右居中水印 IMAGE_WATER_SOUTHWEST = 7 ; //左下角水印 IMAGE_WATER_SOUTH = 8 ; //下居中水印 IMAGE_WATER_SOUTHEAST = 9 ; //右下角水印
For example:
$image->open('./1.jpg')->water('./logo.png',\whereof\ThinkImage\Image::IMAGE_WATER_NORTHWEST)->save("water.jpg");
It can also support the transparency of the watermark image (0~100, the default value is 80) , for example:
$image->open('./1.jpg')->water('./logo.png',\whereof\ThinkImage\Image::IMAGE_WATER_NORTHWEST,50)->save("water.jpg");
can also support adding text watermarks to pictures (assuming there is a 1.ttf font file in the same directory as the entry file), for example:
$image->open('./1.jpg')->text('ThinkPHP','./1.ttf',20,'#000000',\whereof\ThinkImage\Image::IMAGE_WATER_SOUTHEAST)->save("new.jpg");