PHPで簡単に画像を操作・編集できるライブラリ Asido(0.0.0.1a) をCoreserver使ってみたのですが、なぜかGIFのリサイズした画質が悪かった。
(たぶん、PHPではImageMagickは使えずGDしか使えないのが原因?)
ソースを見て一部変更するだけで画質が上がったのでメモ。
画質比較
▼元画像(w302px × h228px)
▼AsidoでGIFリサイズの書き出し比較
Asidoデフォルト ( imageCopyResized() ) |
Asidoカスタマイズ ( imageCopyResampled() ) |
Fireworksでリサイズ |
---|---|---|
![]() |
![]() |
![]() |
ソース変更箇所
class.driver.gd.php の184行目当たり
[php num=’184′]
$r = imageCopyResized(
[/php]
↓
[php num=’184′]
$r = imageCopyResampled(
[/php]
関数 imageCopyResized() → imageCopyResampled() に書き換えるだけ。
これだけで画質が随分上がりました。
Coreserverでも使えたらので、xreaでもたぶん大丈夫だと思います。
注意事項
- サーバーに入ってるGDが2.x以上
- レンタルサーバーによってはimageCopyResampledが使えないケースがあるので、function_exists( ‘imageCopyResampled’)で分岐処理をした方がいいかもしれません。
▼分岐処理する場合のメモ(試してないので動かないかも)
[php num=184]
$r = imageCopyResized(
$_, $tmp->target,
0,0,
0,0,
$width, $height,
$tmp->image_width, $tmp->image_height
);
[/php]
↓
[php num=184]
if( function_exists( ‘imageCopyResampled’) ) {
$r = imageCopyResampled(
$_, $tmp->target,
0,0,
0,0,
$width, $height,
$tmp->image_width, $tmp->image_height
);
} else {
$r = imageCopyResized (
$_, $tmp->target,
0,0,
0,0,
$width, $height,
$tmp->image_width, $tmp->image_height
);
}
[/php]
コメント