解決thinkphp裁剪png圖片背景不透明的方法
在使用thinkphp對(duì)圖片處理的時(shí)候,對(duì)于png圖片的處理比如裁剪,縮略圖,都會(huì)出現(xiàn)背景為白色,不是透明的情況。
這里只是使用了thinkphp3.2.3版本,默認(rèn)GD庫(kù)處理,其他的類庫(kù)自行解決哦。
下面我們看,thinkphp裁剪png圖片背景不透明的問(wèn)題怎么解決?
其實(shí),解決起來(lái)也是很簡(jiǎn)單的,只要將文件ThinkPHP/Library/Think/Image/Driver/GD.class.php修改其中的三個(gè)方法即可。
1、save()方法,第98行。2、crop()方法,第168行。
- 原代碼:
- $fun = 'image'.$type;
- $fun($this->img $imgname);
- 修改為:
- $fun = 'image'.$type;
- imagesavealpha($this->img true);
- $fun($this->img $imgname);
3、thumb()方法,第266行。
- 原代碼:
- $color = imagecolorallocate($img 255 255 255);
- imagefill($img 0 0 $color);
- 修改為:
- $color = imagecolorallocatealpha($img 0 0 0 127);
- imagefill($img 0 0 $color);
- imagesavealpha($img true);
- 原代碼:
- $color = imagecolorallocate($img 255 255 255);
- 修改為:
- $color = imagecolorallocatealpha($img 0 0 0 127);
通過(guò)修改上面三處方法,即可實(shí)現(xiàn)thinkphp裁剪png圖片支持透明的效果了。
發(fā)表評(píng)論