创建放置阴影的Perl Image::Magick方法(非命令行)
我发现这个PHP版本似乎是我需要的结果创建放置阴影的Perl Image::Magick方法(非命令行),perl,imagemagick,shadow,Perl,Imagemagick,Shadow,我发现这个PHP版本似乎是我需要的结果 <?php try { /*** a new Imagick object ***/ $im = new Imagick('images/spork.jpg'); /*** set the image format to png ***/ $im->setImageFormat('png'); /*** an object for the drop shadow ***/ $sha
<?php
try
{
/*** a new Imagick object ***/
$im = new Imagick('images/spork.jpg');
/*** set the image format to png ***/
$im->setImageFormat('png');
/*** an object for the drop shadow ***/
$shadow = $im->clone();
/*** an object for the drop shadow ***/
$drop_shadow = $im->clone();
/*** set shadow color to black ***/
$drop_shadow->setImageBackgroundColor( new ImagickPixel( 'black' ) );
/*** Create the shadow ***/
$drop_shadow->shadowImage( 80, 3, 5, 5 );
/*** stick them together ***/
$drop_shadow->compositeImage( $im, Imagick::COMPOSITE_OVER, 0, 0 );
/*** write image to disk ***/
$drop_shadow->writeImage( '/tmp/dropshadow.png' );
echo 'Wrote Image';
}
catch(Exception $e)
{
echo $e->getMessasge();
}
?>
这给了我一个很好的阴影纵横比(ed)图像,在480x360框/画布中居中,与页面bgcolor f7f7f7匹配
现在,我希望在不使用系统方法的情况下实现这一点
所以,我试过这个:
#!/usr/bin/perl -w
use Image::Resize;
use Image::Magick;
use strict;
my imageurl='http://nonprofit.org/images/someimage.jpg';
my $contact='email@email.org';
my $ibig = Image::Magick->new;
$ibig->Read("$imageurl");
$ibig->Resize(geometry=>'476x356');
$ibig->Montage(geometry=>'476x356',
background=>'#F7F7F7',
quality=>90,gravity=>'center',
shadow=>80x4+4+4);
#tried shadow=>'true' and '1' and many other variations.
$ibig->Annotate(text=>$contact,
x=>2,y=>1,
font=>'Candice',
pointsize=>14,
stroke=>'#000C',
strokewidth=>2,
gravity=>'SouthWest');
$ibig->Annotate(text=>$contact,
x=>2,y=>2,
font=>'Candice',
pointsize=>14,
fill=>'#ffffff',
stroke=>'none',
gravity=>'SouthWest');
$ibig->Montage(geometry=>'480x360',
background=>'#F7F7F7',
quality=>90,
fill=>'#F7F7F7');
$ibig->Write("$new");
这是行不通的。注释可以工作,但是没有阴影,图像通常以479x360结尾
系统方法可以完美地工作,但是,我真的很想通过我的Image::Magick示例来学习如何做到这一点
我花了两天的时间研究这本书并阅读了《男人》
当我弄不明白的时候,我会来到stackoverflow,并总是得到一个解决方案
提前谢谢
(很抱歉格式化问题。我试图清理它。)Montage()
返回新图像。
尝试:
不幸的是,没有明确提到这一点,但本页上有一些例子说明了这一点。“当我弄不明白时,我会来到stackoverflow并总能找到解决方案!”所以为什么你的声誉只有1?不知道。我来这里已经一年了。也许是因为我总是在一天结束时删除我的cookies?不管怎么说,别在乎推销员,不是为了这个。这会影响我获得答案的能力吗?与我有关..无法通过包“Exception 410:无法识别的属性`quality'@Magick.xs/xs_Image__Magick_Montage/9797”找到对象方法“Write”(可能您忘记加载“例外410:但是,阴影语法呢?我在最后一行中放弃了质量,没有更多的错误,但仍然没有阴影,这对我来说是一个真正的麻烦。然后,
$ibig
包含错误字符串“例外410:无法识别的属性
quality'@Magick.xs/xs_Image\uu Magick\u Montage/9797”。这意味着对
$ibig`的赋值导致了该错误。质量
确实不是蒙太奇()
的参数。请参阅关于异常的说明。我是否应该使用$ibig=$ibig=>(yada)在调整大小和写入之间的所有路径?THNAK用于辅助。否,请参阅上面的文档链接以查看哪些方法返回新图像。
#!/usr/bin/perl -w
use Image::Resize;
use Image::Magick;
use strict;
my imageurl='http://nonprofit.org/images/someimage.jpg';
my $contact='email@email.org';
my $ibig = Image::Magick->new;
$ibig->Read("$imageurl");
$ibig->Resize(geometry=>'476x356');
$ibig->Montage(geometry=>'476x356',
background=>'#F7F7F7',
quality=>90,gravity=>'center',
shadow=>80x4+4+4);
#tried shadow=>'true' and '1' and many other variations.
$ibig->Annotate(text=>$contact,
x=>2,y=>1,
font=>'Candice',
pointsize=>14,
stroke=>'#000C',
strokewidth=>2,
gravity=>'SouthWest');
$ibig->Annotate(text=>$contact,
x=>2,y=>2,
font=>'Candice',
pointsize=>14,
fill=>'#ffffff',
stroke=>'none',
gravity=>'SouthWest');
$ibig->Montage(geometry=>'480x360',
background=>'#F7F7F7',
quality=>90,
fill=>'#F7F7F7');
$ibig->Write("$new");
$ibig = $ibig->Montage(...)