我是php的新手,并试图了解图像升级。你能否告诉我如何将图像升级到一定的尺寸?例如,我想在保持纵横比的同时重新调整以下图像的大小。如果可以做到这一点,请你给我一个例子
答案 0 :(得分:1)
$source_image = imagecreatefromjpeg("osaka.jpg");
$source_imagex = imagesx($source_image);
$source_imagey = imagesy($source_image);
$dest_imagex = 300;
$dest_imagey = 200;
$dest_image = imagecreatetruecolor($dest_imagex, $dest_imagey);
质量差,但速度很快:
imagecopyresized($dest_image, $source_image, 0, 0, 0, 0,
$dest_imagex, $dest_imagey, $source_imagex, $source_imagey);
质量最好但速度慢:
imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0,
$dest_imagex, $dest_imagey, $source_imagex, $source_imagey);
答案 1 :(得分:0)
如果你真的想用PHP来做,你可以看一下“imagecopyresampled”函数:
imagecopyresampled on php.net with examples
但是如果你想保持比例,你必须计算它并手动应用于宽度和高度。
答案 2 :(得分:0)
您可以通过将一侧设置为自定义长度并将另一侧设置为“自动”来升级html / CSS中的图像。没有必要在php中升级它,因为放大的图像不包含比“普通”版本更多的信息。它只消耗更多带宽。
<img src="http://placekitten.com/50/50" style="width: 50px; height: auto;" />
<img src="http://placekitten.com/50/50" style="width: 200px; height: auto;" />
请参阅this fiddle。
答案 3 :(得分:0)
图像放大
// creating image resource from image path (also supports url)
$source_image = imagecreatefromjpeg($destinationReal); // 1150x235 px
// getting source image dimension
$source_imagex = imagesx($source_image);
$source_imagey = imagesy($source_image);
// set new image dimension
$dest_imagex = 1150;
$dest_imagey = 348; // in my case I only upscale the height
// create image (in memory)
$dest_image = imagecreatetruecolor($dest_imagex, $dest_imagey);
imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0,
$dest_imagex, $dest_imagey, $source_imagex, $source_imagey);
// save new image
imagejpeg($dest_image, $destination);