<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>QUOIT Blog &#187; ImageMagick</title>
	<atom:link href="http://ken.quoit.jp/tag/imagemagick/feed/" rel="self" type="application/rss+xml" />
	<link>http://ken.quoit.jp</link>
	<description>Programming, OpenSource, HTML/CSS etc...</description>
	<lastBuildDate>Fri, 03 Sep 2010 07:46:05 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>PHPでImageMagick</title>
		<link>http://ken.quoit.jp/2009/10/22/php%e3%81%a7imagemagick/</link>
		<comments>http://ken.quoit.jp/2009/10/22/php%e3%81%a7imagemagick/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 11:34:01 +0000</pubDate>
		<dc:creator>yakumo</dc:creator>
				<category><![CDATA[Programing]]></category>
		<category><![CDATA[ImageMagick]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ken.quoit.jp/?p=272</guid>
		<description><![CDATA[ImageMagickをPHPで使用する手段として、「PECL :: Package :: imagick」がある。 しかしながら、PHPのマニュアルにはImagickクラスについての情報が少ないのです。（なんでだろ？） 既にImageMagickを使っている人なら問題ないのかもしれない（？）ですが、私のようなヘタレSEには困った状態です。 模索しながらですが、いろいろと試してみました。 １）インストール まずはインストールから。 参考にしたのはこちら。 PHPライブラリ「Imagick」で携帯の機種に応じた画像を表示する（1/3）：CodeZine CodeZine最高だぜ！と思って普通に 「pecl install imagick」 を実行！ …phpizeが無いと怒られた。 調べてみると、どうやら「php-devel」に含まれている模様。 まずはこっちからか。。。と思って「yum install php-devel」を実行。 ここでリポジトリの追加を忘れていてハマりまくった…orz 凡ミスであればあるほどショック大きいです。。；； 気を取り直して。 php-develはインストールできましたので、改めて「pecl install imagick」を実行。 今度は素直に入ってくれましたｗ php.iniに「extension=imagick.so」を追記すればインストールは完了。 ２）使ってみる さて、早速使ってみましょうか。 たとえばこんなコードがあったとします。 ※php-gdはインストールされているものとします。 ※例によって、実際にコードをこのまま使うのは危険ですからね！ &#60;?php if(!empty($_GET)){ $filename = $_GET["f"]; }else{ echo &#8220;Error&#8221;; exit(); } $data = pathinfo($filename); $info = getimagesize($filename); $mime = $info['mime']; header(&#8216;Content-type: [...]]]></description>
			<content:encoded><![CDATA[<p>ImageMagickをPHPで使用する手段として、「PECL :: Package :: imagick」がある。</p>
<p>しかしながら、PHPのマニュアルにはImagickクラスについての情報が少ないのです。（なんでだろ？）</p>
<p>既にImageMagickを使っている人なら問題ないのかもしれない（？）ですが、私のようなヘタレSEには困った状態です。</p>
<p>模索しながらですが、いろいろと試してみました。<br />
<span id="more-272"></span><br />
<strong>１）インストール</strong><br />
まずはインストールから。<br />
参考にしたのはこちら。</p>
<blockquote><p><a href="http://codezine.jp/article/detail/4401" target="_blank">PHPライブラリ「Imagick」で携帯の機種に応じた画像を表示する（1/3）：CodeZine</a></p></blockquote>
<p>CodeZine最高だぜ！と思って普通に 「pecl install imagick」 を実行！</p>
<p>…phpizeが無いと怒られた。</p>
<p>調べてみると、どうやら「php-devel」に含まれている模様。<br />
まずはこっちからか。。。と思って「yum install php-devel」を実行。</p>
<p><small>ここでリポジトリの追加を忘れていてハマりまくった…orz<br />
凡ミスであればあるほどショック大きいです。。；；</small></p>
<p>気を取り直して。<br />
php-develはインストールできましたので、改めて「pecl install imagick」を実行。</p>
<p>今度は素直に入ってくれましたｗ</p>
<p>php.iniに「extension=imagick.so」を追記すればインストールは完了。</p>
<p><strong>２）使ってみる</strong><br />
さて、早速使ってみましょうか。</p>
<p>たとえばこんなコードがあったとします。<br />
※php-gdはインストールされているものとします。<br />
※例によって、実際にコードをこのまま使うのは危険ですからね！</p>
<blockquote><p>&lt;?php</p>
<p>if(!empty($_GET)){<br />
$filename = $_GET["f"];<br />
}else{<br />
echo &#8220;Error&#8221;;<br />
exit();<br />
}</p>
<p>$data = pathinfo($filename);<br />
$info = getimagesize($filename);<br />
$mime = $info['mime'];</p>
<p>header(&#8216;Content-type: &#8216;.$mime);<br />
echo readfile($filename);</p>
<p>?&gt;</p></blockquote>
<p>$_GET["f"]としてファイル名を渡してあげると、それを表示するというだけの単純な仕組みです。</p>
<p>これだけならGDモジュールで充分ですが、ImageMagickのすごいところはここからの処理です。</p>
<p><strong>例１）画像サイズを任意に変換できるようにしてみる</strong><br />
さて、さっきのコードを書き換えてみます。</p>
<blockquote><p>&lt;?php</p>
<p>if(!empty($_GET)){<br />
$filename = $_GET["f"];<br />
}else{<br />
echo &#8220;Error&#8221;;<br />
exit();<br />
}</p>
<p>$img = new Imagick();</p>
<p>$img-&gt;readImageBlob(file_get_contents($filename));</p>
<p># 拡張子を取得<br />
$data = pathinfo($filename);<br />
$ext = $data['extension'];</p>
<p># 扱う画像の種別<br />
$img -&gt; setImageFormat($ext);</p>
<p><span style="color:red;"># サイズ変換<br />
$img-&gt;thumbnailImage($_GET["width"],$_GET["height"]);</span></p>
<p># 圧縮<br />
$img-&gt;setCompressionQuality(80);</p>
<p>$info = getimagesize($filename);<br />
$mime = $info['mime'];<br />
header(&#8216;Content-type: &#8216;.$mime);<br />
echo $img;</p>
<p>?&gt;</p></blockquote>
<p>$_GET["width"]と$_GET["height"]を与えてあげると、そのサイズに縮小してくれるようになりました。</p>
<p>ちなみに縦横比を維持したい場合は、基準になる値だけ指定して、<br />
もう一つを「0」とすれば（width=100&amp;height=0とか）OKです。</p>
<p>簡単ですね。ではもう一歩進めてみます。</p>
<p><strong>例２）コントラストを変えてみる</strong></p>
<p>さてまたコードをいじります。</p>
<blockquote><p>&lt;?php</p>
<p>if(!empty($_GET)){<br />
$filename = $_GET["f"];<br />
}else{<br />
echo &#8220;Error&#8221;;<br />
exit();<br />
}</p>
<p>$img = new Imagick();</p>
<p>$img-&gt;readImageBlob(file_get_contents($filename));</p>
<p># 拡張子を取得<br />
$data = pathinfo($filename);<br />
$ext = $data['extension'];</p>
<p># 扱う画像の種別<br />
$img -&gt; setImageFormat($ext);</p>
<p># サイズ変換<br />
$img-&gt;thumbnailImage($_GET["width"],$_GET["height"]);</p>
<p><span style="color:red;"># コントラスト<br />
$img-&gt;normalizeImage($_GET["contrust"]);</span></p>
<p># 圧縮<br />
$img-&gt;setCompressionQuality(80);</p>
<p>$info = getimagesize($filename);<br />
$mime = $info['mime'];<br />
header(&#8216;Content-type: &#8216;.$mime);<br />
echo $img;</p>
<p>?&gt;</p></blockquote>
<p>$_GET["contrust"]で値を渡すと、コントラストを変えてくれます。</p>
<p>さて、なんだか予想がついてきましたでしょうか…？</p>
<p>こんな簡単な変更で（頑張れば）フォトショ並みの加工を施すことができるのです！（言いすぎか？）</p>
<p>他の処理内容についてはマニュアルをどうぞ。</p>
<blockquote><p><a href="http://jp.php.net/imagick" target="_blank">PHP: ImageMagick &#8211; Manual</a></p></blockquote>
<p>※冒頭でも述べましたが、情報が少ないです！</p>
<p>引数のリストは記載されていますので、色々模索してみても楽しそうです。</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=PHP%E3%81%A7ImageMagick+-+http://bit.ly/bJ9nVH&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://ken.quoit.jp/2009/10/22/php%e3%81%a7imagemagick/&amp;t=PHP%E3%81%A7ImageMagick" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-tumblr">
			<a href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fken.quoit.jp%2F2009%2F10%2F22%2Fphp%25e3%2581%25a7imagemagick%2F&amp;t=PHP%E3%81%A7ImageMagick" rel="nofollow" class="external" title="Share this on Tumblr">Share this on Tumblr</a>
		</li>
		<li class="shr-hatena">
			<a href="http://b.hatena.ne.jp/add?mode=confirm&amp;url=http://ken.quoit.jp/2009/10/22/php%e3%81%a7imagemagick/&amp;title=PHP%E3%81%A7ImageMagick" rel="nofollow" class="external" title="Bookmarks this on Hatena Bookmarks">Bookmarks this on Hatena Bookmarks</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://ken.quoit.jp/2009/10/22/php%e3%81%a7imagemagick/&amp;title=PHP%E3%81%A7ImageMagick" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-googlebookmarks">
			<a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http://ken.quoit.jp/2009/10/22/php%e3%81%a7imagemagick/&amp;title=PHP%E3%81%A7ImageMagick" rel="nofollow" class="external" title="Add this to Google Bookmarks">Add this to Google Bookmarks</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://ken.quoit.jp/2009/10/22/php%e3%81%a7imagemagick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
