文章出處

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');

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()