[英]Dynamic Watermark PHP Upload conflict
我有一個水印腳本,你們之前可能從我之前的一個問題中看到過:
<?php
$imagesource = $_GET['path'];
$filetype = substr($imagesource,strlen($imagesource)-4,4);
$filetype = strtolower($filetype);
if($filetype == ".gif") $image = @imagecreatefromgif($imagesource);
if($filetype == ".jpg") $image = @imagecreatefromjpeg($imagesource);
if($filetype == ".png") $image = @imagecreatefrompng($imagesource);
if (!$image) die();
$watermark = @imagecreatefrompng('watermark_'.(imagesx($image) <= 1100 ? "port" : "lans").'.png');
$imagewidth = imagesx($image);
$imageheight = imagesy($image);
$watermarkwidth = imagesx($watermark);
$watermarkheight = imagesy($watermark);
$startwidth = (($imagewidth - $watermarkwidth)/2);
$startheight = (($imageheight - $watermarkheight)/2);
imagecopy($image, $watermark, $startwidth, $startheight, 0, 0, $watermarkwidth,
$watermarkheight);
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);
?>
該腳本工作正常,但當我的客戶端上傳超過2000px X 2000px(或周圍的東西)的圖片時,腳本甚至沒有輸出任何錯誤。 但是,當我將其減少到1100px X 800px時,例如此腳本輸出並顯示圖像。 這有什么理由嗎?
無論如何要么診斷導致這種情況的原因並因此找到解決方案或者在上傳時自動重新調整圖像大小?
這是我目前擁有的上傳腳本:
<?php
if (($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg"))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("uploads/" . $_FILES["file"]["name"]))
{
echo "<h3>".$_FILES["file"]["name"] . " already exists. </h3>";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"uploads/" . $_FILES["file"]["name"]);
echo "Stored in: " . "uploads/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "<h3>Invalid file</h3>";
}
?>
無論如何要么診斷導致這種情況的原因並因此找到解決方案
正如nickb建議的那樣,檢查服務器的error_log
。 根據您配置PHP的方式,這可能在Apache的error_log
,它可能位於單獨的文件中,或者可能不存在,需要打開。
有關更多信息,請參閱PHP手冊中有關錯誤處理的部分 ,特別是php.ini
error_log
指令 。
我懷疑你的腳本可能內存不足。 你的內存限制是多少? ( <?php phpinfo();
可以告訴你這個)。 你試過在php.ini
增加它嗎?
或[有什么辦法]在上傳時自動重新調整圖像大小?
你試過搜索嗎? :-)
感謝Josh我找到了這個我已經集成的直接解決方案。 再次感謝!
<?php
if($_REQUEST['post']==1){
if (($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg"))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("uploads/" . $_FILES["file"]["name"]))
{
echo "<h3>".$_FILES["file"]["name"] . " already exists. </h3>";
}
else
{
// Temporary upload image name
$original_image = $_FILES['file']['tmp_name'];
// Get the image dimensions
$size=getimagesize( $original_image );
// Name to save the image as - in this case the same as the original
$new_image = $_FILES['file']['name'];
// Maximum image width
$max_width = "1600";
// Maximum image height
$max_height = "1600";
// Resize the image and save
exec("convert -size {$size[0]}x{$size[1]} $original_image -thumbnail $max_widthx$max_height $new_image");
echo "File uploaded<br><br>";
echo "<img src=\"'uploads/".$new_image."\" width=\"900\"><br><br>";
$copy = copy($new_image, "uploads/".$new_image);
$delete = unlink($new_image);
if($copy){
echo "Stored in: " . "uploads/" . $_FILES["file"]["name"];
$date = date("d/m/y");
$query = mysql_query ('INSERT INTO `ap_photos_list` ( `photo_id` , `category_id` , `subcategory_id` , `photo_name` , `photo_size` , `upload_date` , `filename` ) VALUES ("", "'.$_REQUEST['category'].'", "'.$_REQUEST['sub_category'].'", "'.$_POST['textfield'].'", "'.($_FILES["file"]["size"] / 1024).'KB", "'.$date.'", "'. $_FILES["file"]["name"].'")');
$query = mysql_query ('INSERT INTO `ap_photos` ( `photo_id` , `category_id` , `subcategory_id` , `photo_name` , `photo_size` , `upload_date` , `filename` , `price` , `size` ) VALUES ("", "'.$_REQUEST['category'].'", "'.$_REQUEST['sub_category'].'", "'.$_POST['textfield'].'", "'.($_FILES["file"]["size"] / 1024).'KB", "'.$date.'", "'. $_FILES["file"]["name"].'" , "6.00" , \'6" x 4"\')');
$query = mysql_query ('INSERT INTO `ap_photos` ( `photo_id` , `category_id` , `subcategory_id` , `photo_name` , `photo_size` , `upload_date` , `filename` , `price` , `size` ) VALUES ("", "'.$_REQUEST['category'].'", "'.$_REQUEST['sub_category'].'", "'.$_POST['textfield'].'", "'.($_FILES["file"]["size"] / 1024).'KB", "'.$date.'", "'. $_FILES["file"]["name"].'" , "8.00" , \'5" x 7"\')');
$query = mysql_query ('INSERT INTO `ap_photos` ( `photo_id` , `category_id` , `subcategory_id` , `photo_name` , `photo_size` , `upload_date` , `filename` , `price` , `size` ) VALUES ("", "'.$_REQUEST['category'].'", "'.$_REQUEST['sub_category'].'", "'.$_POST['textfield'].'", "'.($_FILES["file"]["size"] / 1024).'KB", "'.$date.'", "'. $_FILES["file"]["name"].'" , "10.00" , \'8" x 6"\')');
$query = mysql_query ('INSERT INTO `ap_photos` ( `photo_id` , `category_id` , `subcategory_id` , `photo_name` , `photo_size` , `upload_date` , `filename` , `price` , `size` ) VALUES ("", "'.$_REQUEST['category'].'", "'.$_REQUEST['sub_category'].'", "'.$_POST['textfield'].'", "'.($_FILES["file"]["size"] / 1024).'KB", "'.$date.'", "'. $_FILES["file"]["name"].'" , "12.00" , \'10" x 8"\')');
$query = mysql_query ('INSERT INTO `ap_photos` ( `photo_id` , `category_id` , `subcategory_id` , `photo_name` , `photo_size` , `upload_date` , `filename` , `price` , `size` ) VALUES ("", "'.$_REQUEST['category'].'", "'.$_REQUEST['sub_category'].'", "'.$_POST['textfield'].'", "'.($_FILES["file"]["size"] / 1024).'KB", "'.$date.'", "'. $_FILES["file"]["name"].'" , "15.00" , \'12" x 8"\')');
}else{
echo "Unable to copy file";
}
}
}
}
else
{
echo "<h3>Invalid file</h3>";
}
?>
<br />
<br />
<h3>
<?php
if($query){
echo "Successful";
}else{
echo "Unsuccessful";
}
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.