« JavaScript でクリップボードを扱う方法 (Flash10対応版) | メイン | ブラウザのズーム機能 »

正方形なサムネイルを簡単に出す
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

Keitaです。
バレンタインデーも近づいてきた今日この頃皆様どうお過ごしでしょうか。
例年、僕はとても憂鬱なのですが、今年は、ImageMagickがあるのでとてもハッピーになれそうです。
そんなどうでもいいことはおいて、たまに、Webサービスで正方形でサムネイルを出しているサイトがあると思います。
具体的にいうとこんな感じの画像が
sample
sample posted by (C)フォト蔵
こんな感じの画像になるイメージです。
sample_imagick
sample_imagick posted by (C)フォト蔵

こういう画像をPHPで作る場合には、imagickを使うと簡単に作れます。

<?php
  $width = 200;
  $height = 200;
  //Imagick
  $image = new imagick();
  $image->readImage('sample.jpg');
  $image->cropThumbnailImage($width, $height);
  $image->writeImage('sample_imagick.jpg');
ついでに、MagickWandForPHPで作る場合にはこんな感じで作れます。
<?php
  $width = 200;
  $height = 200;
  //MagickWand
  $image_handle = NewMagickWand();
  MagickReadImage($image_handle, 'sample.jpg');
  $width_org = MagickGetImageWidth($image_handle);
  $height_org = MagickGetImageHeight($image_handle);

  $scale_w = $width / $width_org;
  $scale_h = $height / $height_org;

  $scale = ($scale_w < $scale_h) ? $scale_h : $scale_w;
  
  $width_thumbnail = $width_org * $scale;
  $height_thumbnail = $height_org * $scale;

  $x = ($width_thumbnail - $width) / 2;
  $y = ($height_thumbnail - $height)/ 2;

  MagickThumbnailImage($image_handle, $width_thumbnail, $height_thumbnail);
  MagickCropImage($image_handle, $width, $height, $x, $y);

  MagickWriteImage($image_handle, 'sample_magickwand.jpg');
皆様のご参考になれば幸いです。

トラックバック

このエントリーのトラックバックURL:
http://www.unoh.net/mt32/mt-tb.cgi/1583

コメント

課題は結構重い、ってことですねぇ >imageMagic

JPEGナントカだかナントカJPEGってぇ、チョッパヤなライブラリがあるらしいですよ。

>wa-renさん
お久しぶりです!
ImageMagickは高機能かつ汎用的なので、高速に処理する場合、JPEGやGIFに特化したツールのほうが高速になるかと思います。
なんとか調べてみます

コメントを投稿


画像の中に見える文字を入力してください。

  [PR] 転職
ウノウラボはウノウ株式会社のエンジニア/デザイナーによる大小のアウトプットを行っていく場です。

現在ウノウは絶賛人材募集中です。詳細は求人ページへ。

About

2009年2月 4日 17:41に投稿されたエントリーのページです。

ひとつ前の投稿は「JavaScript でクリップボードを扱う方法 (Flash10対応版)」です。

次の投稿は「ブラウザのズーム機能」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

ウノウサービス