2011-12-04 85 views
0

我使用了一个非常简单的代码来用PHP调整图像大小;但令人惊讶的是它不适用于某些图像。该问题应该与imagecreatefromjpeg()相关联,因为它会生成一个黑色图像(这是背景图像)。使用PHP调整图像大小

$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调整图像大小的最简单和最有效的方法吗?

+0

您的文章是混乱的下载Asido ......究竟是什么问题呢?你是说你得到一个黑色的图像吗?在这种情况下,'imagecopyresampled'具有设置错误的参数,因为black是imagecreatetruecolor的默认值。 – Alasdair

+0

别忘了标题() –

+0

@alasdair他的示例图像是一个带有jpg扩展名的PNG ... –

回答

2

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

编辑:exif-imagetypeImageMagick可能有些用处。

+0

你是对的!看起来人们错误地将图像的扩展命名为网络。我想知道为什么我从未遇到过本地文件的问题。我确实使用'exif_imagetype()'来检测正确的图像格式。 – Googlebot

2

@顺便说一句,这是用PHP/GD2调整图像大小的最简单最有效的方法吗?

使用Asido:PHP图像处理解决方案

Asido支持以下功能:

  • 可插拔驱动GD2(php_gd2),MagickWand(php_magickwand) ImageMagick的延伸部(php_imagick)以及ImageMagick的外壳 命令
  • “黑客”驱动程序:通过使用环境提供的某些其他功能 某些特定驱动程序的某些残疾的解决方法
  • 各种调整大小功能:比例调整大小,只有帧调整
  • 水印图像,包括平铺的水印和大水印的自动缩放
  • 旋转图像
  • 复印图像调整通过宽度或高度,弹力调整大小,配合调整大小,到彼此上
  • 裁剪图像
  • 灰度图像
  • 转换不同的文件类型
01之间的图像

如果您不能访问Asido网站,你可以从SourceForge.net

+0

感谢您的建议。我会试试:) – Googlebot

+0

这是否比矢量绘图GD更快? – Alasdair