長方形の写真を撮り、それを正方形の領域にトリミングしてから、背景が透明な円形にマスクしようとしています。
//$dims is an array with the width, height, x, y of the region in the rectangular image (whose path on disk is $tempfile)
$circle = new \Imagick();
$circle->newImage($dims['w'], $dims['h'], 'none');
$circle->setimageformat('png');
$circle->setimagematte(true);
$draw = new \ImagickDraw();
$draw->setfillcolor('#ffffff');
$draw->circle($dims['w']/2, $dims['h']/2, $dims['w']/2, $dims['w']);
$circle->drawimage($draw);
$imagick = new \Imagick();
$imagick->readImage($tempfile);
$imagick->setImageFormat( "png" );
$imagick->setimagematte(true);
$imagick->cropimage($dims['w'], $dims['h'], $dims['x'], $dims['y']);
$imagick->compositeimage($circle, \Imagick::COMPOSITE_DSTIN, 0, 0);
$imagick->writeImage($tempfile);
$imagick->destroy();
結果は、切り取られておらず、円形化されていない長方形の画像です。私は何を間違っていますか?
画像例:
$dims = {"x":253,"y":0,"x2":438.5,"y2":185.5,"w":185.5,"h":185.5} の入力例
大まかな予想出力:
私が得ている画像は、入力画像とほぼ同じように見えます。