このコードは、数週間前から問題を抱えていて、解決に近づいていません...
function create_thumbnail($source, $destination, $thumb_width){
$extension = get_image_extension($source);
$size = getimagesize($source);
$imageWidth = $newWidth = $size[0];
$imageHeight = $newheight = $size[1];
if ($imageWidth > $thumb_width || $imageHeight > $thumb_width)
{
// Calculate the ratio
$xscale = ($imageWidth/$thumb_width);
$yscale = ($imageHeight/$thumb_width);
$newWidth = ($yscale > $xscale) ? round($imageWidth * (1/$yscale)) : round($imageWidth * (1/$xscale));
$newHeight = ($yscale > $xscale) ? round($imageHeight * (1/$yscale)) : round($imageHeight * (1/$xscale));
}
$newImage = imagecreatetruecolor($newWidth, $newHeight);
switch ($extension)
{
case 'jpeg':
case 'jpg':
$imageCreateFrom = 'imagecreatefromjpeg';
$store = 'imagejpeg';
break;
case 'png':
$imageCreateFrom = 'imagecreatefrompng';
$store = 'imagepng';
break;
case 'gif':
$imageCreateFrom = 'imagecreatefromgif';
$store = 'imagegif';
break;
default:
return false;
}
$container = $imageCreateFrom($source);
imagecopyresampled($newImage, $container, 0, 0, 0, 0, $newWidth, $newHeight, $imageWidth, $imageHeight);
return $store($newImage, $destination);
}
現在は問題なく動作していますが、これらのサイズ変更された画像が入るスペースは 200 (高さ) x 225 (幅) で、背が高くて細い画像や、短くて幅が広い画像が表示されることがあります。それらをスペースに収めるために、理想的には、これらの画像を押しつぶしたり切り取ったりしてサイズを変更できる場合ですが、それが可能かどうかはわかりません...そうですか?
それが不可能な場合は、このコードを調整しようとしていると思います。そのため、高さが200の高さでサイズ変更する画像が背が高くて細い場合、および画像が幅225にサイズ変更するために幅が広く短い場合...これを願っています理にかなっています。
とにかく、ヒント、アドバイス、または何でもいただければ幸いです。
mschrコード(以下の回答)を実行しようとしましたが、これらのエラーが発生しました
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/content/44/8713044/html/admin/Home.php on line 321
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/content/44/8713044/html/admin/Home.php on line 323
Warning: Cannot modify header information - headers already sent by (output started at /home/content/44/8713044/html/admin/include/header.php:7) in /home/content/44/8713044/html/admin/Home.php on line 325
Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/content/44/8713044/html/admin/Home.php on line 329
Warning: imagedestroy(): supplied argument is not a valid Image resource in /home/content/44/8713044/html/admin/Home.php on line 334