MagickWand For PHP 学习 例子 生成图片(二)
http://www.wapdaily.com/icej/blog/article.asp?id=469
[ 2005-11-11 16:16:15 | 作者:
瞄瞄 | 收藏本页到:
ViVi |
365key this!]
下面的例子是读取一张原图,经过设置画笔颜色,粗细,透明度后画线,在浏览器显示图片,注释的是存本地图片
Header("Content-type: image/jpg");
$nmw =NewMagickWand();
$ndw=NewDrawingWand();
$npw=NewPixelWand("black");
DrawSetStrokeColor($ndw,$npw);
DrawSetStrokeWidth($ndw,20);
DrawSetStrokeAlpha($ndw,0.8);//0<alpha<1
//DrawSetStrokeDashArray(); 不知道是做什么的?网上说是线形?
//$dash=DrawGetStrokeDashArray($ndw);
//echo 'alpha:'.DrawGetStrokeAlpha($ndw);
DrawLine($ndw,20,20,100,100);
MagickReadImage($nmw,"google.jpg");
//echo ' nums images:'.MagickGetNumberImages($nmw);
MagickDrawImage($nmw,$ndw);
MagickEchoImageBlob($nmw);
//MagickWriteImage($nmw,"google4.jpg"); 本地存图
DestroyDrawingWand($ndw);//注销资源
DestroyPixelWand($npw);
DestroyMagickWand($nmw);
直接生成图片,不先读取本地图片资源在生成...操作时一定记着设置图片格式..我就是因为这里搞了好久才做出来;而且还要设置延迟....我不知道我写的是否一定正确..我很奇怪为什么空白图要先建立个新图片然后还要设置延迟....也许NewMagickWand的时候并没有图层吧?
Header("Content-type: image/gif");
$nmw =NewMagickWand();
$ndw=NewDrawingWand();
$black=NewPixelWand("black");
$white=NewPixelWand("white");
DrawSetStrokeColor($ndw,$white);
MagickNewImage($nmw,200,200,$black);
MagickSetFormat($nmw,"GIF");
MagickSetImageDelay($nmw, 2);
DrawLine($ndw,20,20,100,100);
MagickDrawImage($nmw,$ndw);
MagickEchoImageBlob($nmw);
DestroyDrawingWand($ndw);
DestroyPixelWand($npw);
DestroyMagickWand($nmw);
生成anim的gif图只要在加几个图层,然后使用MagickEchoImagesBlob,多个s,就可以了
下面是国外找到的anim gif代码
强大的MagickWand库,难以置信的简单。
<?
$array = array(
"X02.jpg",
"X03.jpg");
$mw = NewMagickWand();
for($i=0; $i<count($array);$i++) {
$rw = NewMagickWand();
MagickReadImage($rw,$array[$i]);
MagickSetImageDelay($rw,300); MagickAddImage($mw,$rw);
DestroyMagickWand($rw);
}
MagickSetFormat($mw,"gif");
MagickWriteImages($mw,"animate.gif",MagickTrue);
$mw = DestroyMagickWand($mw);
?>
效果图:
用PHP+MagickWand自动生成Gif动画
http://ottoman51770.bokee.com/6234213.html
关键词:
MagickWand Gif动画 自动
<?
$array = array(
"X02.jpg",
"X03.jpg");
$mw = NewMagickWand();
for($i=0; $i<count($array);$i++) {
$rw = NewMagickWand();
MagickReadImage($rw,$array[$i]);
MagickSetImageDelay($rw,300); //300=3秒
MagickAddImage($mw,$rw);
DestroyMagickWand($rw);
}
MagickSetFormat($mw,"gif");
MagickWriteImages($mw,"animate.gif",MagickTrue);
$mw = DestroyMagickWand($mw);
?>