http://yoo-s.com/topic/detail/388
function
resize_image(
$org_path
,
$new_path
,
$to_width
,
$to_height
) {
list(
$org_width
,
$org_height
) =
getimagesize
(
$org_image_path
);
$src_image
= imagecreatefrompng(
$org_path
);
$rate
= 1;
if
(
$org_width
>
$org_height
) {
$rate
=
$to_width
/
$org_width
;
}
elseif
(
$org_width
<
$org_height
) {
$rate
=
$to_height
/
$org_height
;
}
else
{
if
(
$to_width
>
$to_height
) {
$rate
=
$to_height
/
$org_height
;
}
else
{
$rate
=
$to_width
/
$org_width
;
}
}
$to_width
=
$rate
*
$org_width
;
$to_height
=
$rate
*
$org_height
;
$new_image
= imagecreatetruecolor(
$to_width
,
$to_height
);
imagealphablending(
$new_image
, false);
imagesavealpha(
$new_image
, true);
imagecopyresampled(
$new_image
,
$src_image
, 0, 0, 0, 0,
$to_width
,
$to_height
,
$org_width
,
$org_height
);
imagepng(
$new_image
,
$new_image_path
);
imagedestroy(
$src_image
);
imagedestroy(
$new_image
);
}
png 透過の手順は、
(1) imagecreatetruecolor() で画像作成
(2) imagealphablending(), imagesavealpha() でアルファチャンネルの作成
(3) imagepng() で画像の書き出し
リサイズの手順は
(1) getimagesize() で取得したサイズ配列から
(2) 比率を計算(サンプルの計算はちょっとあやしいかも)
(3) imagecopyresampled() でリサンプリング
0 件のコメント:
コメントを投稿