【问题标题】:Resizing image with PHP使用 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...

标签: php image gd jpeg


【解决方案1】:

您的示例图片是 PNG,而不是 JPEG。您可能需要放置一些检测代码...

编辑:exif-imagetypeImageMagick 可能有用。

【讨论】:

  • 你说的很对!似乎人们错误地命名了网络上图像的扩展名。我想知道为什么我从来没有遇到过本地文件的这个问题。我确实使用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快吗?
猜你喜欢
  • 2012-02-28
  • 2012-08-12
  • 1970-01-01
  • 2011-11-25
  • 2012-01-09
  • 1970-01-01
  • 2015-06-08
  • 2012-04-19
  • 1970-01-01
相关资源
最近更新 更多