SyntaxHighlighter

2015年11月27日金曜日

GDでimagecropを使用したら画像に黒枠ができた場合の対処

PHPでGDのimagecropを使用し画像をトリミングをしたのですが、画像の周りに黒枠ができてしまいました。
PHPマニュアル>GD>imagecrop
こんな感じで上下左右に数pxの黒枠が出てしまいました。
そんなときの対処法。

imagecopyresampledを使う。

PHPマニュアル>GD>imagecopyresampled
bool imagecopyresampled (
resource $dst_image ,resource $src_image ,
int $dst_x , int $dst_y ,
int $src_x , int $src_y ,
int $dst_w , int $dst_h ,
int $src_w , int $src_h )

$dst_imageは
$dst_image = imagecreatetruecolor( $img_width, $img_height );
などとし、
$src_imageは元になる画像sourceを指定
$dst_xと$dst_yは0を指定。
$src_xと$src_yは切り取りたいx,y位置。
$dst_wと$src_w、 $dst_hと$src_h
はそれぞれ同じ値で幅と高さを指定。
これで黒枠が出ないようになる。
結果は
はい、すっきり。

imagedestroyで使用したリソースは破棄することを忘れずに。