問題:將任何PNG圖像轉換爲JPEG圖像時,圖像全部變爲黑色。JPEG圖像使用PHP轉換PNG圖像時轉爲全黑色
首先,我搜索了互聯網和stackoverflow,以瞭解如何做到這一點。我已經嘗試了所有可以在PHP手冊和堆棧溢出中找到的方法。問題依然存在。我使用GD(沒有安裝ImageMagick)。
我的代碼如下。這是對功能的調用:
$tempImage = $dirPath.$filename.$tempMini.".jpg";
createTempImage($sourcefile, $tempImage, $tempMini_width, $tempMini_height, 100);
我已經評論了我嘗試過的不同方法。
function createTempImage($sourcefile, $setNewName, $maxwidth, $maxheight, $quality){
$fileInfoArray = getimagesize($sourcefile);
$imagetype = $fileInfoArray['mime'];
if($imagetype == 'image/jpeg'){
$img = imagecreatefromjpeg($sourcefile);
}elseif($imagetype == 'image/gif'){
$img = imagecreatefromgif($sourcefile);
}elseif(($imagetype == 'image/png')||($imagetype == 'image/x-png')){
$img = imagecreatefrompng($sourcefile);
}
$width = imagesx($img);
$height = imagesy($img);
if ($width > $maxwidth || $height > $maxheight){
$factor = min(($maxwidth/$width),($maxheight/$height));
$newwidth = round($width*$factor);
$newheight = round($height*$factor);
} else {
$newwidth = $width;
$newheight = $height;
}
$tmpimg = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($tmpimg, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($tmpimg, $setNewName, 100);
imagedestroy($tmpimg);
imagedestroy($img);
}
下也已經嘗試:
$white = imagecolorallocate($tmpimg, 255, 255, 255);
ImageFill($tmpimg, 0, 0, $white);
ImageSaveAlpha($tmpimg, false);
ImageAlphaBlending($tmpimg, false);
$white = imagecolorallocate($tmpimg, 255, 255, 255);
imagefilledrectangle($tmpimg, 0, 0, $newwidth, $newheight, $white);
更新:頂部黑匣子是圖像結果:http://twitpic.com/30ywf5
在MIME檢測中添加最後的else語句: 'else die(「unknown format」);' – jmz 2010-10-26 07:55:04
你能舉一個例子PNG嗎?你是否嘗試過來自不同來源的各種PNG? – 2010-10-26 08:20:59
每次我嘗試從Google獲取新的.PNG圖像時。 頂部框是圖像結果:http://twitpic.com/30ywf5 – stwhite 2010-10-26 08:27:15