使用 PHP 调整图像大小
Posted
技术标签:
【中文标题】使用 PHP 调整图像大小【英文标题】:Resizing image with PHP 【发布时间】:2011-12-04 14:02:32 【问题描述】:我使用了一个非常简单的代码来用 php 调整图像大小;但令人惊讶的是,它不适用于某些图像。该问题应该与 imagecreatefromjpeg() 有关,因为它会生成黑色图像(属于背景图像)。
$picture="test5.jpg";
$url="http://www.pokerpurist.com/uploadedImages/bettingpro/NewsImages/TN98553_Perla-Beltran.jpg";
list($width, $height) = getimagesize($url);
$new_height = $height / $width * 400;
$image_p = imagecreatetruecolor(400, $new_height);
$image = imagecreatefromjpeg($url);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, 400, $new_height, $width, $height);
imagejpeg($image_p, $picture);
echo "<img src='$picture' />";
这个问题经常发生,我附上了一张示例图片。这些图像有什么问题导致这个问题?好像是普通的JPG图片。
顺便问一下,用 PHP/GD2 调整图像大小是最简单最有效的方法吗?
【问题讨论】:
您的帖子令人困惑...到底是什么问题?你是说你得到的是黑色图像吗?在这种情况下,imagecopyresampled
的参数设置错误,因为黑色是 imagecreatetruecolor
的默认值。
@alasdair 他的示例图片是带有 jpg 扩展名的 PNG...
【参考方案1】:
您的示例图片是 PNG,而不是 JPEG。您可能需要放置一些检测代码...
编辑:exif-imagetype 或 ImageMagick 可能有用。
【讨论】:
你说的很对!似乎人们错误地命名了网络上图像的扩展名。我想知道为什么我从来没有遇到过本地文件的这个问题。我确实使用exif_imagetype()
来检测正确的图像格式。【参考方案2】:
@顺便问一下,用PHP/GD2调整图片大小是不是最简单最有效的方法?
使用Asido:PHP图像处理方案
Asido 支持以下功能:
GD2 (php_gd2)、MagickWand (php_magickwand) 的可插拔驱动程序, ImageMagick 扩展 (php_imagick) 以及 ImageMagick shell 命令 “hack”驱动程序:通过使用提供的一些其他功能解决特定驱动程序的某些残疾问题 受环境影响 各种调整大小功能:按比例调整大小、仅按宽度或高度调整大小、拉伸调整大小、适合调整大小、调整框架大小 水印图片,包括平铺水印和大水印的自动缩放 旋转图像 将图像相互复制 裁剪图像 灰度图像 在不同文件类型之间转换图像如果无法访问Asido网站,可以从SourceForge.net下载Asido
【讨论】:
感谢您的建议。我会试试的:) 矢量绘图这比GD快吗?以上是关于使用 PHP 调整图像大小的主要内容,如果未能解决你的问题,请参考以下文章