Carpe Diem

  Top > スポンサー広告> PHP > PHPで画像のリサイズ  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PHPで画像のリサイズ

2011 - 09/01 [Thu] - 21:43

友人にzipアーカイブから画像を読み込むPHPソースを書いてもらったのでそれを少しずつ改造しています。
今回はその際のちょっとしたメモを。

流れは
元画像のサイズ取得→新画像のサイズ指定→新画像生成(画像自体はない)→元画像から新画像へリサイズしてコピー
です。

その中でいくつか問題があって

PHPをzipアーカイブから読み込む場合
imagecreatefromstring
を使って読み込むんですが、これだと元画像サイズを知る際にgetimagesizeを使用できません。なのでimagesx,imagesyでサイズを取得します。

で、リサイズ時にジャギーが出てほしくないのでGD2を使用した方法を使います。注意点は
新画像生成では
×:imagecreate
◯:imagecreatetruecolor


リサイズしてコピーする際は
×:imagecopyresized
◯:imagecopyresampled


を使用します。これでジャギーの目立たないリサイズが出来ます。

コードとしては

$im_string = $zip->getFromIndex($index);
$im = imagecreatefromstring($im_string);
//元画像のサイズ取得
$w = imagesx($im);
$h = imagesy($im);

//新画像用サイズ指定
$w2 = $w * 0.5;
$h2 = $h * 0.5;
//新画像生成
$im2 = imagecreatetruecolor($w2,$h2);
//リサイズしてコピー
imagecopyresampled($im2, $im, 0, 0, 0, 0, $w2, $h2, $w, $h);
imagejpeg($im2);
imagedestroy($im);
imagedestroy($im2);


以上です。


◆GD や Imagick がPHPinfoにない
GD や Imagick は以下のようにインストールできます。
$ sudo aptitude install php5-gd
$ sudo aptitude install php5-imagick


ただそれでもphpinfo() で表示されない場合(反映されない場合)は php を再インストールしてください。再インストールの過程で反映してくれます。

$ sudo aptitude reinstall php5-common

これでちゃんとGD等も表示されます。

ソース:
GD2.xより向上したimagecopyresampled()の画像リサイズ処理
GD2を使って画像のサムネイルを作成する。
imagecopyresampled

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。