重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

phpでウェブ上にある画像リンクから画像を自分のサーバーに保存するときに、決まった大きさにして保存したいのですが、どうやってやればいいかわかりません。

保存したい画像は決まったサイズでもなく、縦横比もそれぞれ違います。
これを決まったサイズ&縦横比も合わせたいと考えています。

例えば、
設定したいサイズ:(縦)500px - (横)500px
元の画像A:(縦)1000px - (横)1000px
元の画像B:(縦)1000px - (横)700px

画像Aであれば、縦横を半分にするだけなので簡単にできるのですが、
画像Bを500px - 500pxのサイズにするのですが、縦横比を維持したままにしたいです。余白は設定した色にする。

なので、
(縦)500px - (横)350px
のサイズにして、左右中央に設置して余白は背景色を設定して、
(縦)500px - (横)500px
のサイズにしたいのです。

どうすれば良いか分からず困っています。
ご教授お願いします。

A 回答 (1件)

こんなかんじ?


<?PHP
newimage("src.jpg","new.jpg",50,50);
function newimage($src_filename,$new_filename,$new_width,$new_height)
{
$src_img=imagecreatefromjpeg($src_filename);
list($src_width, $src_height) = getimagesize($src_filename);
$src_ratio=$src_width/$src_height;
$new_ratio=$new_width/$new_height;
if($src_ratio>$new_ratio){
$dst_width=$new_width;
$dst_height=$new_height/$src_ratio;
$dst_x=0;
$dst_y=($new_height-$dst_height)/2;
}else{
$dst_height=$new_height;
$dst_width=$new_width*$src_ratio;
$dst_x=($new_width-$dst_width)/2;
$dst_y=0;
}
$new_img = imagecreatetruecolor($new_width,$new_height);
$backgroundcolor = imagecolorallocate($new_img, 255, 255, 255);
imagefill($new_img, 0, 0, $backgroundcolor);
imagecopyresized($new_img,$src_img,$dst_x,$dst_y, 0, 0, $dst_width, $dst_height, $src_width, $src_height);
imagejpeg($new_img,$new_filename);
imagedestroy($new_img);
exit;
}
?>
    • good
    • 0
この回答へのお礼

できました!!!!完璧です!!
ありがとうございます!!!

お礼日時:2016/03/16 17:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!