0
我有一個圖像庫,用戶可以在上傳圖像後上傳圖像,PHP腳本創建它的兩個副本 - 一個用於縮略圖,另一個用於在較大尺寸的圖庫中顯示。imagecreatefromstring對於某些PNG圖像文件返回false
應用程序工作正常,只是,當上傳一些圖片PNG,聲明
if([email protected]($filedata))
返回false。
以下是腳本。請幫忙。
<!---------------Processing uploaded image----------------->
<?php
if (isset($_FILES['file1']))
{
if($fgmembersite->CheckLogin())
{
if($_FILES['file1']['error']>0)
{
echo "file upload error".$_FILES['file1']['error'];
}
else
{
$allowedtype=array('image/jpg','image/jpeg','image/pjpeg','image/gif','image/png');
$maxsize=10*1024*1024;
$filename= mysql_real_escape_string($_FILES['file1']['name']);
$tmp_name=$_FILES['file1']['tmp_name'];
$size=$_FILES['file1']['size'];
$type=$_FILES['file1']['type'];
$ext=$filename;
if (!in_array($type,$allowedtype))
{
die ('Invalid file type');
}
if ($size>$maxsize)
{
die ('error- file size must be less than'.($maxsize/1024/1024).'MB');
}
filedata=file_get_contents($tmp_name);
if([email protected]($filedata))
{
$width=imagesx($image);
$height=imagesy($image);
//creating images
$large=imagecreatetruecolor(445,380);
imagecopyresampled($large,$image,0,0,0,0,445,380,$width,$height);
$largepath = 'image/large/' . uniqid('img',true) . '.jpg' ; //assigning file location and path
$thumb=imagecreatetruecolor(54,54);
imagecopyresampled($thumb,$image,0,0,0,0,54,54,$width,$height);
$thumbpath = 'image/thumb/' . uniqid('thumb',true) . '.jpg' ;
if (imagejpeg($thumb,$thumbpath) && imagejpeg($large,$largepath))
{
$con = connect();
query("INSERT INTO gallery (caption,thumbpath,largepath) values ('$caption','$thumbpath','$largepath')");
}
header('location:'.$_SERVER["PHP_SELF"]);
}
else
echo "failed";
}
}
}
?>
謝謝,用給定的語法嘗試過,但沒有結果。 – 2013-03-12 14:22:27
@HYDERALI你確定你看到的是修改後的圖像,而不是緩存的版本?您應該嘗試生成大量不同質量的相同圖像,並比較文件大小和視覺質量。 – jeroen 2013-03-12 14:23:54
我從同一圖像生成不同質量參數(0 - 100)的圖像。文件大小和質量都得到提高。但即使以100爲質量參數,也不具有原始圖像的質量和文件大小。 – 2013-03-12 14:40:05