Thursday, June 18, 2009

ImageMagickとPHPで画像を回転させる - その2

Imagickで任意の位置を基点として画像を回転させるには、以下のコードを実行します。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja"
xml:lang="ja" dir="ltr">
<head>
<title>sample1127(ImageMagick6.5.2)</title>
</head>
<body>
<?php
// 画面の中央で回転
$im = new Imagick("sf.jpg");
$im->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
$im->setImageMatte(true);
$args1 = array(45);
//$im->distortImage(Imagick::DISTORTION_SCALEROTATETRANSLATE,
// $args1, false);
// ScaleRotateTranslateDistortion in distort.h
$im->distortImage(3, $args1, false);
$im->writeImage('sample1127a.png');
$im->destroy();

// 画面の水平方向中央の下端で回転
$im2 = new Imagick("sf.jpg");
$im2->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
$im2->setImageMatte(true);
$args2 = array($im2->getImageWidth()/2,
$im2->getImageHeight(),1,45);
//$im->distortImage(Imagick::DISTORTION_SCALEROTATETRANSLATE,
// $args2, false);
// ScaleRotateTranslateDistortion in distort.h
$im2->distortImage(3, $args2, false);
$im2->writeImage('sample1127b.png');
$im2->destroy();
?>
<img src="sample1127a.png" /><br />
<img src="sample1127b.png" /><br />

</body>
</html>


元画像(sf.jpg)


出力画像1(sample1127a.png):画面中央で回転
Imagickで画面中央を中心として回転させた画像

出力画像2(sample1127b.png):画面の水平方向中央の下端で回転
Imagickで画像下中央を中心として回転させた画像

関連項目
ImageMagickとPHPで画像を回転させる

No comments: