2010-12-20 118 views
0

我有一個用戶可以上傳照片的網站。我不知道如何處理照片。爲了製作一張大尺寸照片的縮略圖,我只是調整寬度和高度?還是有更好的方法來做到這一點?如何將高分辨率照片調整爲縮略圖?

如果你能指點我的任何資源或給我任何提示,那就太好了。

我正在使用Ruby on Rails,如果有問題的話。我並不是很想要寶石,因爲我想學習如何自己做。

+1

「我可能想要了解的所有圖像」不適合一本書,更不用說SO問題了。 – 2010-12-20 16:58:14

+0

關於標題不夠公平,但問題更具體。 – 2010-12-20 17:02:52

+0

嘗試回形針寶石,你會感謝我,我提到它。 – 2010-12-20 17:15:58

回答

3

對於其中的一些問題,「學會如何自己做」將成爲一項重要任務。例如,調整圖像大小。繼續,找到一個開源的庫(如寶石),調整圖像大小並查看其源代碼。自己做並不是不可能的,但許多類似的事情是建立在以前的專業知識基礎之上的,等等。使用其他人創建的工具沒有任何問題,只要您瞭解該工具是什麼這樣做。

的幾點,希望能夠幫助你:

  1. 圍棋與圖像格式是否支持白名單的做法。不要讓用戶上傳任何他們稱之爲圖片的東西。
  2. 您支持的每種格式都將具有其自己的元數據標準(可能爲多個)。剝離數據批發可能會也可能不是一個好主意。例如,一個jpeg可能會在其EXIF數據中包含其方向,如果將其刪除,則可能會有效地旋轉圖像。某些字段(如地理標記)可能需要爲了保護用戶的隱私而剝離出來等。再次,請查看現有的庫,瞭解它們是如何實現的。
  3. 請勿隱式信任用於確定圖像類型的文件擴展名。用戶可能會構建一個非真實圖像的惡意文件,將其作爲圖像傳遞給不知情的主機,並在該主機嘗試將該文件作爲圖像進行處理時有效地打開安全漏洞。在Ruby here中有一個關於確定文件類型的問題,我相信在這個主題上還有很多可以找到的東西。
+0

謝謝你。非常豐富。上傳文件時的部分參數是內容類型。例如它顯示「@ content_type =」image/jpeg「」。這不可靠? – 2010-12-20 17:38:17

+0

@GreenRails:它應該是可靠的,但在驗證用戶輸入時我傾向於偏執。我確定還有其他人,但是這裏有關於這個主題的.NET討論:http://forums.asp.net/t/1331793.aspx – David 2010-12-20 17:42:19

2

大衛回答了這個問題很好,但我想我也許能提供關於你的問題一些更具體的信息。

使用Paperclip gem與RMagick(一個用於Ruby的ImageMagick包裝器)結合使用。您可以設置後期處理選項並創建多個重新調整。

如果您確實想自己動手,請查看https://github.com/thoughtbot/paperclip上的實際寶石,您將看到該作者是如何做到的。 Ruby on Rails背後的部分思想是DRTW(不要重新發明輪子)。利用那裏的東西,並建立它。這將節省您的時間,並使您能夠在長跑時做更多的事情。

0

另一種方法是使用第三方服務,如http://resizer.co(我不隸屬於)

從您的網站替換圖片網址,說:

http://example.com/images/abc123.jpg 

具有以下(對一個200×200的圖像)

http://www.resizer.co?image=http://example.com/images/abc123.jpg&w=200&h=200 

您可能碰上與失真和不保持「寬高比」的問題,但它可能是一個好的開端。

相關問題