使用imagick将图片背景变透明

标签: php
3493人阅读 评论(0) 收藏 举报
分类:

imagemagick有命令行convert可以做很多效果,但如果exec被禁用的话那比较麻烦了。前些天就有一位朋友问我是不是可以将imagemagick官方的一个将图片背景变成透明的写法转成imagick写法,这几天花了时间研究了一下,官方的imagick帮助看了半天没有收获,只能将就着去翻它的源码,终于有点收获。

  imagemagic官方去除图片背景的命令行模式:
convert cyclops.png -bordercolor white -border 1x1 -matte           -fill none -fuzz 20%  -draw 'matte 0,0 floodfill'           -shave 1x1    cyclops_flood_3.png  

  imagick代码:

<?php
$image = new Imagick('1.png');
$image->borderImage(new ImagickPixel("white"),1,1);
$image->paintfloodfillimage('transparent',2000,NULL,0,0);
$draw = new ImagickDraw();
$draw->color(0,0,imagick::PAINT_FLOODFILL);
$image->drawImage($draw);
$image->shaveImage(1,1);
header("Content-Type: image/{$image->getImageFormat()}");
echo $image->getImageBlob( );
//$image->writeImage('o.png');
$image->clear();
$image->destroy();
?>

源图片:


效果图:

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:900308次
    • 积分:12056
    • 等级:
    • 排名:第1284名
    • 原创:168篇
    • 转载:143篇
    • 译文:103篇
    • 评论:85条
    微信公众号
    博客专栏
    文章分类
    IT牛人
    ...
    ..