2012-09-20 89 views
0

我有以下工作正常:PHP imagecopyresampled +如何獲得最好的結果

  1. 用戶上傳的圖像,並調整大小使用imagecopyresampled和imagejpeg(保持比例),所以它適合種植DIV 。

  2. 然後,用戶使用JCrop裁剪圖像,然後使用imagecopyresampled和imagejpeg將調整大小的上述圖像裁剪爲5個所需的裁剪尺寸。


我發現的問題是從調整後的圖像剪裁不走,往往是更大的,更好的質量非常原始圖像的優勢。

所以我想要顯示一個適合DIV的圖像,但是從原始圖像中裁剪以獲得最佳質量。

當我只是將裁切改爲原始圖像時,由於裁切大小不同,裁切成爲圖像的錯誤部分。這很明顯,我假設。 Diff大小的圖像。


如何顯示適合Jcrop DIV的圖像,但實際上裁剪的原始圖像通常較大?

想法我測試:

  • 顯示在DIV原始圖像(不是PHP的調整,但調整的CSS)。我不確定這是否會有所作爲。

  • 嘗試使用一些基於數學的方程來獲得正確的作物。不確定我目前會怎麼做。

想法將是巨大的...... THX

回答

1

個人而言,我會用基礎的解決方案,如果您有全尺寸圖像服務器端工作的數學去。直接或通過CSS在瀏覽器中重新縮放並不是理想的IMO,而且瀏覽器之間差別很大。如果使用基於數學的選項,則可以計算較小圖像裁剪和縮放的座標,以獲取原始圖像的正確部分。

在附註中,您可能會發現(取決於您允許上傳的圖像大小和圖像類型),在PHP端進行復制和調整大小非常耗費CPU和內存。例如,高分辨率的大約1024 x 768的png文件可能需要多達60MB到80MB的RAM才能調整大小(由於png文件上的壓縮而導致每個圖像重新採樣),並且不管哪個PHP圖像處理模塊( ImageMagick等)您使用。沒有完美的方式來處理來自PHP服務器端的圖片上傳(除了在任務中投擲大量內存和CPU)。有一些很好的jQuery解決方案可以在上傳之前在客戶端調整大小(例如Plupload等),這意味着您只能在服務器端使用縮小大小的圖像。還有一些很好的JQuery客戶端裁剪腳本。無論哪種方式,PHP和jQuery的組合將是最好的IMO。