2011-12-04 206 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