使用php imagick填充图像

时间:2017-05-15 13:09:13

标签: php imagick

我需要创建没有图像丢失的方形图像。我找到了一个使用ImageMagick作为bash脚本工作的工具,但似乎无法使用php Imagick来完成它。

我找到的脚本在http://www.fmwconcepts.com/imagemagick/squareup/index.php

中称为平方

我的代码目前看起来像这样:

$image = new Imagick($srcimage);
$image->setCompressionQuality(100);
if ($image->getImageHeight() <= $image->getImageWidth()) 
  $image->resizeImage($maxsize, 0, Imagick::FILTER_MITCHELL, 1);
else 
  $image->resizeImage(0, $maxsize, Imagick::FILTER_MITCHELL, 1);

$h=$image->getImageHeight();
$w=$image->getimagewidth();
$hlarge=0;
$wlarge=0;
if ($w>$h) {
  $diff=intval(($w-$h)/2);
  $wlarge=1;
  $h=$w;
} else {
  $diff=intval(($h-$w)/2);
  $w=$h;
  $hlarge=1;
}
$newimage = new Imagick();
if ($image->getImageColorspace() == Imagick::COLORSPACE_CMYK) {
  $fg="cmyk(0,0,0,0)";
  $fg_pixel=new ImagickPixel($fg);
  $newimage->newImage($w, $h, $fg_pixel);
  $newimage->setImageColorspace(Imagick::COLORSPACE_CMYK);
} else {
  $newimage->newImage($w, $h, new ImagickPixel('#ffffff'));
}
$newimage->compositeImage($image,\Imagick::COMPOSITE_OVER,0,0);
$newimage->setImageCompression(Imagick::COMPRESSION_JPEG);
$newimage->setImageCompressionQuality(100);
$newimage->stripImage();
$newimage->writeImage($contactimage);
$newimage->destroy();
$image->destroy();

1 个答案:

答案 0 :(得分:0)

在ImageMagick 6中执行pad to square或crop to square的最简单方法如下:

输入:

enter image description here

size=`convert hatching_orig.jpg -format "%[fx:max(w,h)]" info:`
convert hatching_orig.jpg -background red -gravity center -extent ${size}x${size} hatching_pad.jpg

enter image description here

size=`convert hatching_orig.jpg -format "%[fx:min(w,h)]" info:`
convert hatching_orig.jpg -background red -gravity center -extent ${size}x${size} hatching_crop.jpg

enter image description here

相同的命令,但大小不同的变量。

在IM 7中,您可以在一个命令行中执行每个操作。

我希望这些命令很容易转换为Imagick。但应该在sRGB色彩空间中完成。见http://us3.php.net/manual/en/imagick.extentimage.php