2010-02-17 103 views
1

ImageCopyResampled可以處理的最大寬度和高度是多少?我的代碼適用於寬度和高度較小的圖像。對於較大的圖像,它將忽略座標,這意味着裁剪從圖像的左上角開始。PHP - ImageCopyResampled max size

是否有解決方法?這裏有一部分:

$trgt_width = 500; 
      $trgt_height = 400; 
      if(copy($src_file, $trgt_file)): 
       $src_image = imageCreateFromJpeg($src_file); 
       $trgt_image = imageCreateTrueColor($trgt_width, $trgt_height); 
       imageCopyResampled($trgt_image, $src_image, 0, 0, $x, $y, $trgt_width, $trgt_height, $width ,$height); 
       imageJpeg($trgt_image, $thumb_file, 75); 
      endif; 

謝謝。

+0

這是你的嗎? http://stackoverflow.com/questions/2274266/php-problem-with-imagecopyresampled如果是這樣,你爲什麼要開設新賬戶來問新問題? – 2010-02-17 01:55:45

+0

對,對不起。我決定使用不同的電子郵件地址,因爲我爲第一個帳戶輸入了錯誤的電子郵件地址。感謝您的回答。 – mist 2010-02-17 02:20:32

回答

2

這取決於腳本可能佔用的RAM的最大數量。這通常由管理員在您的服務器上設置。該設置被稱爲memory_limit

您可以使用phpinfo()找到它並搜索「memory_limit」。

上調整圖像的大小所需要的尺寸的粗略計算:

number of bytes width x number of bytes height x 3 

3所述的真彩色圖像的每個信道:紅,綠和藍色。

因此,尺寸爲1000 x 1000像素的圖像至少佔用3 MB的內存。在調整大小過程中可能更多,因爲該功能必須同時將大型和大小已調整的版本保留在內存中。

就你而言,我懷疑圖像根本不會被裁剪,可能是因爲複製操作失敗,因爲$src_file根本不存在。

+0

感謝您的答案,但問題與CSS。基本上,我做的是通過ajax上傳圖片文件,然後立即將其加載到同一頁面,以「最大寬度」700px顯示。有我使用插件「Jcrop」來處理裁剪尺寸和發送這種使用後期的方法。起初,代碼適用於寬度不超過700像素的圖像。由於這不適用於超過700px的寬度,我只是刪除了最大寬度屬性,現在它可以工作。我知道從編程的角度來看,這是非常荒謬的,下面會有更好的解釋。 – mist 2010-02-17 02:35:30

+0

然後,問題主要不是PHP腳本,而是作物插件向您發送的數據。所有傳遞給腳本的裁剪參數的測試輸出會給你帶來什麼? (可能是'print_r($ _ GET);') – 2010-02-17 09:02:19