使用imagick将图片背景变成透明
Submitted by mpeg on 2008, August 23, 3:31 PM. imagick
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
PHP代码 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->clear();
- $image->destroy();
- ?>
转换前图片:源图

转换后图片,为了看得更清楚使用PS处理。

Tags: imagick, imagemagick
« 上一篇 | 下一篇 »
只显示10条记录相关文章
使用imagick在动态GIF上打文字水印 (浏览:
13291, 评论:
20)
使用imagick编写平铺整个图的水印 (浏览:
4555, 评论:
2)
使用imagick生成灰度差异图片 (浏览:
2066, 评论:
0)
Enhancing an image (浏览:
2200, 评论:
6)
ImagickDraw, a quick introduction to drawing (浏览:
1445, 评论:
0)
ImagickDraw, more complex drawing (浏览:
1317, 评论:
0)
Artistic effects: polaroid image (浏览:
1459, 评论:
0)
Creating a simple line graph (浏览:
1239, 评论:
0)
polaroids laying on my desk (浏览:
1280, 评论:
0)
Pretty thumbnails (浏览:
1450, 评论:
0)
Trackbacks
7条记录访客评论
Imagick::fxImage ( string $expression [, int $channel= Imagick::CHANNEL_ALL ] ) 这个函数什么意思啊?其中$expression 有什么要求? 我的gtalk:xupengyuan2008@googlemail.com如果能加我,方便交流就最好不过了。我和彪叔是朋友。
Post by armstxpy on 2009, April 12, 1:50 AM
#1
用命令执行成功
但是用程序执行你这里多个程序都出现
Fatal error: Uncaught exception 'ImagickException' with message 'Corrupt image `/usr/local/apache2/haixia/cyclops.png' @ png.c/ReadPNGImage/2892' in /usr/local/apache2/haixia/image3.php:2 Stack trace: #0 /usr/local/apache2/haixia/image3.php(2): Imagick->__construct('/www/haixia/cyc...') #1 {main} thrown in /usr/local/apache2/haixia/image3.php on line 2
是我配置出现什么问题吗
Post by 阮 on 2009, February 18, 9:05 AM
#2
还是黑色的。。。看这个
http://p11.freep.com.cn/p.aspx?u=v20_p11_p_0808260921199510_0.png&click=1
Post by magickwand on 2008, August 26, 9:22 AM
#3
呵呵,我用的是LINUX下的版本。你可以把
$draw->color(0,0,imagick::PAINT_FLOODFILL);
换成
$draw->metta(0,0,imagick::PAINT_FLOODFILL);
试试。
抱歉上不了QQ,只能这样交流了。
Post by mpeg on 2008, August 25, 7:41 PM
#4
我用的windows下的imagick.dll.....换了个版本的dll可以运行,但是背景出来是黑色的...
Post by magickwand on 2008, August 25, 7:07 PM
#5
我使用的imagick 版本是 2.2.0 stable 2008-07-09
编译成SO后载入的应该没有问题。你再删除后重装一下。
Post by mpeg on 2008, August 25, 6:53 PM
#6
Call to undefined method Imagick::paintfloodfillimage()
运行时出现这个。。。难道是我的Imagick有问题?...
Post by magickwand on 2008, August 25, 1:23 PM
#7
发表评论