2017-05-15 1 views
0

Je dois créer des images carrées sans perte d'image. J'ai trouvé un outil qui fait le travail en tant que script bash en utilisant ImageMagick mais ne peut jamais sembler capable de le faire avec php Imagick.bourrage d'images en utilisant php imagick

Le script que j'ai trouvé est appelé squareup de http://www.fmwconcepts.com/imagemagick/squareup/index.php

Mon code ressemble à ce moment:

$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

Quel est votre problème? – Bonzo

+0

Squareup est mon script. Mais je ne connais pas Imagick pour vous aider à le convertir. Pourquoi ne pas simplement l'appeler de PHP exec()? Le script et ImageMagick doivent s'exécuter sur des images RVB et non sur CMJN. – fmw42

+0

Si vous voulez recadrer simplement ou mettre en carré, voir http://www.imagemagick.org/Usage/thumbnails/#square – fmw42

Répondre

0

La façon la plus simple de le faire pad à la case ou la culture à la case départ dans ImageMagick 6 est la suivante:

entrée:

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

commande même, mais différente taille variable.

Dans IM 7, vous pouvez faire chacun dans une ligne de commande.

Ces commandes devraient être faciles à convertir en Imagick, je m'attendrais. Mais devrait être fait dans l'espace de couleurs sRGB. Voir http://us3.php.net/manual/en/imagick.extentimage.php