首頁  >  文章  >  php框架  >  聊聊有關thinkphp中的Image操作

聊聊有關thinkphp中的Image操作

藏色散人
藏色散人轉載
2022-01-10 16:26:562994瀏覽

下面thinkphp框架教學欄位將介紹關於thinkphp3.2.3中的Image操作,希望對需要的朋友有幫助!

#參考thinkphp3.2.3中Image操作

#https://www. kancloud.cn/manual/thinkphp/1878

不依賴任何框架

一般情況下都會安裝gd函式庫

需要Imagick請安裝 https://pecl.php. net/package/imagick

安裝

composer require whereof/think-image

實例化類別庫

$image = new \whereof\ThinkImage\Image();

預設使用GD庫進行映像操作,如果需要使用Imagick庫操作的話,需要改成:

$image = new \whereof\ThinkImage\Image(\Think\Image::IMAGE_IMAGICK); 
// 或者采用
$image = new \whereof\ThinkImage\Image('Imagick');

圖像操作

下面來看下基礎的圖像操作功能的使用方法。

開啟圖片檔案

假設目前入口檔案目錄下方有一個1.jpg檔案

使用open方法開啟影像檔案進行相關操作:

$image = \whereof\ThinkImage\Image(); 
$image->open('./1.jpg');

也可以簡化成下面的方式:

$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库

獲取圖像信息

可以獲取打開圖片的信息,包括圖像大小、類型等,例如:

$width = $image->width(); // 返回图片的宽度
$height = $image->height(); // 返回图片的高度
$type = $image->type(); // 返回图片的类型
$mime = $image->mime(); // 返回图片的mime类型
$size = $image->size(); // 返回图片的尺寸数组 0 图片宽度 1 图片高度

裁剪圖片

使用crop和save方法完成裁切圖片功能。

//将图片裁剪为400x400并保存为corp.jpg
$image->crop(400, 400)->save('./crop.jpg');

支援從某個座標開始裁剪,例如下面從(100,30)開始裁剪:

//将图片裁剪为400x400并保存为corp.jpg
$image->crop(400, 400,100,30)->save('./crop.jpg');

產生縮圖

使用thumb方法產生縮圖

// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg
$image->thumb(150, 150)->save('./thumb.jpg');

可以支援其他類型的縮圖生成,設定包括\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 ; //固定尺寸缩放类型

#
// 生成一个居中裁剪为150*150的缩略图并保存为thumb.jpg
$image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_CENTER)->save('./thumb.jpg');

左上角剪裁

$image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_NORTHWEST)->save('./thumb.jpg');

縮放填充

$image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_FILLED)->save('./thumb.jpg');

固定大小

$image->thumb(150, 150,\whereof\ThinkImage\Image::IMAGE_THUMB_FIXED)->save('./thumb.jpg');

添加圖片水印

//将图片裁剪为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");

water方法的第二個參數表示水印的位置,可以傳入下列Think\Imag類別的常數或對應的數字:

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 ; //右下角水印

例如:

$image->open('./1.jpg')->water('./logo.png',\whereof\ThinkImage\Image::IMAGE_WATER_NORTHWEST)->save("water.jpg");

也可以支援水印圖片的透明度(0~100,預設值是80) ,例如:

$image->open('./1.jpg')->water('./logo.png',\whereof\ThinkImage\Image::IMAGE_WATER_NORTHWEST,50)->save("water.jpg");

也可以支援為圖片添加文字浮水印(假設在入口檔案的同級目錄下存在1.ttf字體檔案),例如:

$image->open('./1.jpg')->text('ThinkPHP','./1.ttf',20,'#000000',\whereof\ThinkImage\Image::IMAGE_WATER_SOUTHEAST)->save("new.jpg");

#推薦學習:《最新的10個thinkphp影片教學

#

以上是聊聊有關thinkphp中的Image操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除