2016-09-29 15 views
8

私のチームと私はiOSアプリケーションを構築しています。現場の技術者は、テクニカル機器で解決している特定の問題の画像をアップロードすることができます。これらの画像がS3にアップロードされるときには、ズームインすることが重要です(品質を比較的高く維持する)。クライアントでサムネイルを生成する

最近私たちはサムネイルを追加することに決めました。これは、他のユーザーがiOSアプリをブラウズするとき、1.5-2.5mbの画像をダウンロードするよりもはるかに高速であるためです。

私の同僚は、これを処理する最善の方法は、iOSで200〜500kbのサムネイルを生成し、次に画像とサムネイルをs3にアップロードすることだと判断しました。

インターネットの速度が遅く、データの使用が制限されている一部の技術者が、私の懸念を表明しました。だから、デバイス上のこのすべての追加作業を行い、アップロードは私には意味をなさない。しかし、チームはこれを良い解決策とみなし、前進します。 S3とLambdaのサムネイルをサーバー上で自動的に生成する方法の簡単な例を紹介しました。追加の帯域幅で高品質の画像をアップロードするか、アップロードの速度を大幅にアップすることができます。場合によっては、ユーザーが100枚以上の画像をアップロードすることもあります。...

とにかく、これを処理する最善の方法は、主に私自身のためのものだと思っています。サニティーチェック。

+2

あなたの正気はそのままですが、ニットを扱うことはありません。状況については申し訳ありません。 –

+0

@JohnGriffinありがとう、私のGF(技術的に精通していない人)の後で、これを教えてくれた最初の人です。常識を持っていたエンジニアは数ヶ月後に辞めましたが、私は彼が常に現行のチームがショートカットを取るのが好きだと言いましたので、彼が私に同意すると思います。( – agrublev

+2

あなたはすでに答えを知っています。あなたの意見を基にしていますが、あなたは既に正しい答えを持っています - サーバにそれをさせるようにしてください – Wain

答えて

2

私はあなたのプロジェクトの複雑さを完全に理解していませんが、経験からすれば、私にはあなたの言葉が1つあります。曇り度。一般的な目的のクラウドストレージソリューションであるS3とは対照的に、曇りはで、画像を処理するためにに設計されています。

毎日何万本もの写真を扱うオンラインで分類されたアプリが200,000ヒットあります。そして曇りは私たちのすべてのニーズに非常に意味のある解決策を提供します。私たちは、モバイルデバイスやデスクトップデバイスからのユーザーによるアップロード、それらのイメージのブックマーク、CDNベースのサービス、およびサムネイルの生成を行っています。

サムネイル生成が組み込まれていることを言及しましたか?に組み込まれていますか?彼らは

  • リサイズやトリミング
  • 最適化されたJPEGカスタムクロップ
  • 顔サムネイル
  • 回転した円形のサムネイル
  • ズーム効果とズームイメージオーバーレイ
  • 透かしを含め、同様に他の機能の多くを持っています画像
  • 最適化WebP
  • オーバーレイ、ボーダー、シャドーオーバーレイ、境界線、影など

管理コンソールはかなりキスしています。上記のすべての機能をクラウド上で構成できます。そして、それはアプリケーション(私たちは内部のRuby、Go、NodeJSサービス、Webアプリケーション、iOS、そしてAndroidアプリでも使用しています)とよく似ています。 私はCloudineをあなたに売ることはできませんが、私が必要とするイメージベースのサービスであれば、CloudyのためにいつでもS3に行くことを保証できます。 EBayやTEDなどの主要なプレイヤーは、画像要件にそれを使用します。

-1

最近、我々は他の人ではなく1.5〜2.5メガバイト 画像をダウンロードするよりも、iOSアプリをブラウズするとき、それは はるかに高速になりますので、サムネイルを追加することにしました。

ネットワークレイテンシが要因となった別のパラレルユニバースで同様の問題に直面しました。私は、デバイスから2つのイメージ、サムネイルと元のイメージを提出しました。

  1. サムネイルは最初にメタデータと共にサーバーに送信されました。これはペイロードを小さく保ち、アプリケーションのユーザーは写真を撮って注釈をつけることができました。

  2. 元のイメージもバックグラウンドタスクでサーバーに送信されました。元の画像をサーバー上に置くことは、後で必要とされるズームやその他の操作を提供するために重要でした。あなたが想像できるように

元の画像が他のユーザーのために利用可能ではないかもしれないとして、これは「happy paths」そう少なくないが作成されます。しかし、元の画像が完全に提出されるまで、少なくともプレビューを得ることができます。

これは良い方法ですか?

私はそれは言うことができませんが、確かに妥協であった。

いいですか?

これは、使用状況によって異なります。私は、メタデータを小さなサムネイルとともにアップロードする必要がありましたが、その前に、処理を続けるためにオリジナルをサーバーに保存する必要がありました。

+0

私は理解していない、またはあなたが誤解した場合。問題は、サムネイルとフルサイズの画像をサーバーに送信するか、サーバー側にサムネイルを生成して大きな画像のみをアップロードするかどうかです。 私があなたを理解していれば、まずサムネイルを送信してから大きな画像を送信したとします。だからあなたはクライアントでこれを行うのは大丈夫だと提案していますか? – agrublev

+0

@agrublev正しいですが、私の場合は、デバイスから両方の異なる間隔で両方を送信しなければなりませんでした。 –

+0

なぜこれをしたのか説明できますか?なぜそれがいいアイデアだったのですか、それに代わるものがなかった理由は、それが良い方法であると信じていますか?単にあなたがそれは質問に答えていないと言った:( – agrublev