Reportez-vous à Opération d'image dans thinkphp3.2.3
https://www.kancloud.cn/manual/thinkphp/1878
Ne dépend d'aucun framework
Dans des circonstances normales, la bibliothèque gd sera installée
Si vous avez besoin d'Imagick, veuillez installer https://pecl.php.net/package/imagick
Install
composer require whereof/think-image
Bibliothèque de classes d'instanciation
$image = new \whereof\ThinkImage\Image();
Par défaut, la bibliothèque GD est utilisé pour les opérations sur les images. Si vous devez utiliser la bibliothèque Imagick Pour le fonctionnement, vous devez le changer en :
$image = new \whereof\ThinkImage\Image(\Think\Image::IMAGE_IMAGICK); // 或者采用 $image = new \whereof\ThinkImage\Image('Imagick');
Opération sur l'image
Voyons comment utiliser la fonction d'opération de base sur l'image.
Ouvrez le fichier image
Supposons qu'il y ait un fichier 1.jpg dans le répertoire actuel du fichier d'entrée
Utilisez la méthode open pour ouvrir le fichier image pour les opérations associées :
$image = \whereof\ThinkImage\Image(); $image->open('./1.jpg');
Il peut également être simplifié par la méthode suivante :
$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库
Obtenir des informations sur l'image
Vous pouvez obtenir les informations sur l'image ouverte, y compris la taille, le type, etc. de l'image, par exemple :
$width = $image->width(); // 返回图片的宽度 $height = $image->height(); // 返回图片的高度 $type = $image->type(); // 返回图片的类型 $mime = $image->mime(); // 返回图片的mime类型 $size = $image->size(); // 返回图片的尺寸数组 0 图片宽度 1 图片高度
Recadrer l'image
Utilisez les méthodes de recadrage et d'enregistrement pour compléter la fonction de recadrage de l'image .
//将图片裁剪为400x400并保存为corp.jpg $image->crop(400, 400)->save('./crop.jpg');
prend en charge le recadrage à partir d'une certaine coordonnée, par exemple à partir de (100, 30) :
//将图片裁剪为400x400并保存为corp.jpg $image->crop(400, 400,100,30)->save('./crop.jpg');
Générer des vignettes
Utiliser la méthode du pouce pour générer des vignettes
// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg $image->thumb(150, 150)->save('./thumb.jpg');
peut prendre en charge d'autres types de génération de vignettes, les paramètres incluent whereofThinkImageImage
Les éléments suivants constantes ou nombres correspondants :
IMAGE_THUMB_SCALE = 1 ; //等比例缩放类型 IMAGE_THUMB_FILLED = 2 ; //缩放后填充类型 IMAGE_THUMB_CENTER = 3 ; //居中裁剪类型 IMAGE_THUMB_NORTHWEST = 4 ; //左上角裁剪类型 IMAGE_THUMB_SOUTHEAST = 5 ; //右下角裁剪类型 IMAGE_THUMB_FIXED = 6 ; //固定尺寸缩放类型
Recadrage centré
// 生成一个居中裁剪为150*150的缩略图并保存为thumb.jpg $image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_CENTER)->save('./thumb.jpg');
Recadrage du coin supérieur gauche
$image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_NORTHWEST)->save('./thumb.jpg');
Remplissage d'échelle
$image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_FILLED)->save('./thumb.jpg');
Taille fixe
$image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_FIXED)->save('./thumb.jpg');
Ajouter un filigrane d'image
//将图片裁剪为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");
Le deuxième paramètre de la méthode de l'eau représente l'emplacement du filigrane, vous pouvez transmettre les constantes suivantes ou les numéros correspondants de la classe ThinkImag :
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 ; //右下角水印
Par exemple :
$image->open('./1.jpg')->water('./logo.png',\whereof\ThinkImage\Image::IMAGE_WATER_NORTHWEST)->save("water.jpg");
peut également prendre en charge la transparence des images en filigrane (0~100, la valeur par défaut est 80), par exemple :
$image->open('./1.jpg')->water('./logo.png',\whereof\ThinkImage\Image::IMAGE_WATER_NORTHWEST,50)->save("water.jpg");
peut également prendre en charge les images en filigrane. Ajoutez un filigrane de texte (en supposant qu'il existe un fichier de police 1.ttf dans le même répertoire que le fichier d'entrée), par exemple :
$image->open('./1.jpg')->text('ThinkPHP','./1.ttf',20,'#000000',\whereof\ThinkImage\Image::IMAGE_WATER_SOUTHEAST)->save("new.jpg");