2017-05-15 12 views
0

画像を失うことなく正方形の画像を作成する必要があります。私はImageMagickを使ってbashスクリプトとして仕事をするツールを見つけましたが、php Imagickでそれを行うことはできないようです。私が見つけたスクリプトがhttp://www.fmwconcepts.com/imagemagick/squareup/index.phpphp imagickを使用して画像をパディングする

からsquareupと呼ばれる

は私のコードは、現在、次のようになります。

$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(); 
+0

あなたの問題は何ですか? – Bonzo

+0

Squareupは私のスクリプトです。しかし、私はあなたがそれを変換するのを助けるImagickを知らない。なぜPHP exec()から呼び出さないのですか?スクリプトとImageMagickはRGBイメージで実行する必要があり、CMYKでは実行する必要はありません。 – fmw42

+0

単純な切り抜きや四角形にする場合は、http://www.imagemagick.org/Usage/thumbnails/#squareを参照してください。 – fmw42

答えて

0

ImageMagickの6に正方形に広場にパッドやトリミングを行う最も簡単な方法は次のとおりです。

入力:

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では、それぞれを1つのコマンドラインで実行できます。

これらのコマンドはImagickに変換するのが簡単なはずです。しかし、sRGB色空間で行う必要があります。 http://us3.php.net/manual/en/imagick.extentimage.php

関連する問題