Mit Imagemagick eine Maske über ein Bild legen und daraus eine Transparenz generieren

Es geht ungefähr darum:

Ich habe ein Bild mit den Abmessungen 500×500. Aus diesem soll nun ein 200×200 Bild generiert werden, wo das ursprüngliche Bild kreisrund ausgeschnitten ist und alles außerhalb des Kreises transparent ist. Das ist mit Imagemagick glücklicherweise sehr einfach:

//the base 500x500 image
$baseImage = 'img/base.jpg';

//the mask image, where the circle is transparent and everything outsite is black
$maskImage = 'img/kreis.png';

//step1: resize the base image to 200x200
$minFile = $path.'tmp/'.uniqid("tmp_").'.png';
$cmd = sprintf('convert %s -resize 200x200^ %s', $baseImage, $baseImage);
exec($cmd);

//step2: create a new temporary image in /tmp/ folder
$temp = 'tmp/' . uniqid("tmp_") . '.png' ;
touch( $temp );

//step3: place the mask over it
$cmd = sprintf( "convert %s %s -alpha off -compose CopyOpacity -composite %s", $baseImage, $maskImage, $temp );
exec( $cmd );

Und das wars.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.