文章出處
文章列表
ThinkPHP 的圖像處理功能,即 Image.class.php。支持
GD 庫和 Imagick 庫,包括對 GIF 圖像處理的支持。
一. 實例化類庫
1 //實例化圖像處理類,默認為GD庫 2 $image = new Image();
1 //采用Imageick擴展庫,默認沒安裝 2 $image = new Image(Image:: IMAGE_IMAGICK ); 3 $image = new Image('Imagick');
PS:Imageick 擴展庫在處理更加復雜的圖像上具有很強的優勢,但如果只是一些普通
的需求,使用 GD 庫完全夠用。
二. 獲取圖像信息
我們講一張圖片保存在 Public 公共目錄下,命名為:1.jpg。首先,通過 Image 打開圖像。
1 //實例化圖象處理類庫 2 $image = new Image(); 3 //加載一張預處理的圖片 4 $image->open('./Public/1.jpg');
1 //上面兩句,可以用一句話包含 2 $image = new Image(Image:: IMAGE_GD , './Public/1.jpg');
//獲取圖片信息 $arr['width']=$image->width(); $arr['height']=$image->height(); $arr['type']=$image->type(); $arr['mime']=$image->mime(); $arr['size']=$image->size(); var_dump($arr);
三. 圖像處理
使用 crop()和 save()方法可以實現圖像的裁剪功能。
1 //裁剪圖片,高400,寬400 2 $image->crop(400,400)->save('./Public/2.jpg');
1 //裁剪圖片,坐標100,100開始裁剪 2 $image->crop(400,400,100,100)->save('./Public/2.jpg');
1 //裁剪圖片,生成后的圖片壓縮成高寬200 2 $image->crop(400,400,100,100,200,200)->save('./Public/2.jpg');
使用 thumb 方法生成縮略圖。
1 //生成縮略圖 2 $image->thumb(300,300)->save('./Public/2.jpg');
PS:雖然我們設置了寬高 300,但實際上它是 300 x 168,因為生成縮略圖采用默認
等比例縮放的。如果想用其它縮略圖模式,可以使用以下方式。
1 IMAGE_THUMB_SCALE = 1 ; //等比例縮放類型 2 IMAGE_THUMB_FILLED = 2 ; //縮放后填充類型 3 IMAGE_THUMB_CENTER = 3 ; //居中裁剪類型 4 IMAGE_THUMB_NORTHWEST = 4 ; //左上角裁剪類型 5 IMAGE_THUMB_SOUTHEAST = 5 ; //右下角裁剪類型 6 IMAGE_THUMB_FIXED = 6 ; //固定尺寸縮放類型
1 //生成縮略圖,以中心點截取,直接傳3也可以 2 $image->thumb(300,300,Image::IMAGE_THUMB_CENTER)->save('./public/2.jpg');
這行和上面這行的效果是一樣的:
1 $image->thumb(300,300,3)->save('./public/2.jpg');
使用 water()方法可以生成一張包含水印的圖片。
1 //在圖片右下角添加水印并生成 2 $image->water('./Public/logo.png')->save('./Public/2.jpg');
由于默認是右下角水印位置,如果想更改水印位置,可以在第二參數使用如下:
1 IMAGE_WATER_NORTHWEST = 1 ; //左上角水印 2 IMAGE_WATER_NORTH = 2 ; //上居中水印 3 IMAGE_WATER_NORTHEAST = 3 ; //右上角水印 4 IMAGE_WATER_WEST = 4 ; //左居中水印 5 IMAGE_WATER_CENTER = 5 ; //居中水印 6 IMAGE_WATER_EAST = 6 ; //右居中水印 7 IMAGE_WATER_SOUTHWEST = 7 ; //左下角水印 8 IMAGE_WATER_SOUTH = 8 ; //下居中水印 9 IMAGE_WATER_SOUTHEAST = 9 ; //右下角水印
1 //更改水印到左上角 2 $image->water('./public/logo.jpg',image::IMAGE_WATER_NORTHWEST)->save('./public/2.jpg');
同樣,用1來代替 image::IMAGE_WATER_NORTHWEST 的效果是一樣的。
1 //設置水印的透明度,默認為80,1-100之間 2 $image->water('./public/logo.jpg',1,30)->save('./public/2.jpg');
1 //設置文本水印 2 $image->text('This is ThinkPHP','./public/javatext.ttf',20,'#ffffff',image::IMAGE_WATER_NORTHWEST)->save('./public/2.jpg');
文章列表
全站熱搜