2016-09-29 50 views
8

我和我的團隊正在構建iOS應用程序。我們允許現場技術人員上傳圖像,解決他們在技術設備上解決的某些問題。當這些圖像上傳到S3時,放大(以保持相對較高的質量)將是非常重要的。在客戶端生成縮略圖

最近,我們決定增加縮略圖,因爲這會快得多,當別人瀏覽iOS應用,而不是下載1.5-2.5mb圖像。

我的同事決定來處理,這是產生於iOS的一個200-500kb縮略圖然後上傳圖像和縮略圖S3的最佳途徑。

我表達了我的關注,我們的一些技術人員可能在世界的一些地方,上網速度慢,數據的使用是有限的。因此,在設備上進行所有這些額外的工作並上傳對我來說毫無意義。然而,團隊認爲這是一個很好的解決方案,並將繼續前進。我已經向他們展示瞭如何在服務器上自動生成S3和Lambda縮略圖的簡單示例...允許我們通過額外的帶寬上傳更高保真度的圖像,或者通過上傳更少的內容來提高應用程序的速度。有時,用戶可以上傳多達100張圖像...這意味着額外的20-50MB ...

反正我想聽聽你們是怎麼想的來處理這個最好的辦法就是一些答案,主要是爲我自己完整性檢查。

+2

你的理智是完整的,除了處理尼特。對此感到抱歉。 –

+0

@JohnGriffin謝謝你,你是我GF後面的第一個人(誰不是技術頭腦)告訴我這件事。一個有常識的工程師在幾個月前退出了,我認爲他會同意我的觀點,因爲他經常提到目前的球隊喜歡採取捷徑:( – agrublev

+2

)你已經知道答案了,這對於SO來說並不是一個問題,因爲它是意見爲準,但你也已經有了正確的答案 - 讓服務器做到這一點 – Wain

回答

2

我並不完全理解你的項目的錯綜複雜,但是從經驗來說,我對你有一個詞 - Cloudinary。與S3(通用雲存儲解決方案)相反,cloudinary是設計的來處理圖像。

我們有200,000次點擊每天在線分類應用程序,每天處理數萬張照片。 cloudinary爲我們的所有需求提供了一個非常平均的解決方案。我們已經通過用戶從他們的移動設備和桌面設備上傳,爲這些圖像添加書籤,基於CDN的服務和縮略圖生成。

我提到他們已經生成縮略圖建於?他們有許多其他功能,以及包括

  • 調整大小和作物
  • 優化JPEG自定義裁剪
  • 面部縮略圖
  • 旋轉的圓形縮略圖
  • 縮放效果和縮放圖像疊加
  • 水印圖片
  • 優化的WebP
  • 覆蓋,邊防,沙德ow文本覆蓋,邊框,陰影等

管理控制檯也很漂亮,以上所有功能都可供您通過雲進行配置。它幾乎適用於任何應用程序(我們在內部的Ruby,Go,NodeJS服務,Web應用程序以及我們的iOS和Android應用程序中都使用它)。 我沒有付錢給你賣Cloudinary,但我可以保證,如果它是我需要的基於圖像的服務,我會在S3的任何一天去Cloudinary。像EBay和TED等主要玩家使用它來滿足他們的圖像要求。

-1

最近,我們決定增加縮略圖,因爲這會快得多 當別人瀏覽iOS應用,而不是下載1.5-2.5mb 圖像。

我在另一個平行網絡中面臨類似的問題,網絡延遲是一個因素。我最終提交了來自設備的兩個圖像,一個縮略圖和原始圖像。

  1. 縮略圖與元數據一起首先發送到服務器。這使得有效載荷保持較小,並且允許應用的用戶繼續拍照並進行註釋。

  2. 原始圖像也提交給服務器,但在後臺任務。在服務器上放置原始圖像是在稍後提供縮放和其他操作所需的關鍵。

正如你可以想像,這產生了一些不那麼「happy paths」作爲原始圖像可能不是供其他用戶使用。但是,他們至少可以預覽直到原始圖像完整提交。

這是一個很好的做法嗎?

我不能說這是,但它肯定是一種妥協。

這是一個好主意嗎?

這取決於您的使用情況。我需要在繼續之前幾乎立即上傳元數據和一個小縮略圖,但我還需要將原始數據保存在服務器上供將來處理。

+0

不確定我是否理解,或者如果您誤解了。問題是要將縮略圖和全尺寸的圖像發送到服務器,還是要在服務器端生成縮略圖並僅上傳大圖像。 如果我理解你,你說你先發送了縮略圖,然後是大圖。所以你建議在客戶端做這件事是可以的嗎? – agrublev

+0

@agrublev對我來說,正確的是,我必須以不同的時間間隔從設備發送兩者。 –

+0

你能解釋你爲什麼這麼做嗎?爲什麼這是一個好主意,爲什麼沒有其他選擇,你認爲這是一個好的做法嗎?簡單地說,你做了它沒有回答這個問題:( – agrublev