2009-06-25 11 views
2

Google App Engineにはユーザーからの画像のアップロードを受け付けるアプリケーションがあります。私が想像している問題は、ユーザーがカメラから直接これらの画像をアップロードし、ファイルサイズが画像APIの制限(画像のサイズを変更するために使用される)である1MBを超えることが多いことです。App Engineで大きな画像のサイズを変更する

1.5MBイメージファイルのアップロードを受け入れ、1MB未満にサイズを変更するにはどうすればよいですか?

答えて

1

これは難解です。 google.appengine.api.images.resizeを使用した「わかりやすい」回答は、大きすぎるためうまくいきません。 :)サーバー上で(App Engineの制限のために厄介な)サードパーティのソフトウェアやJavaのアップローダなどのサードパーティのソフトウェアを使用する必要があります。ここで

+0

そのリンクでは、Googleから –

3

は、これを解決するには、2つの(同様の)方法があります。

  1. 自分自身を制御し、すべてを維持したい場合は、生のアップロードにURLをとる、あなたのサーバー上でリサイズスクリプトを置くことができますイメージ(HTTPレスポンスのサイズ制限のため最大10MBまでですが、データストアに1MBのチャンクとして保存する必要があります)をアプリケーションからダウンロードしてサイズを変更し、POSTをアプリケーションに戻します。この相互作用はすべて、もちろん、何らかの種類の認可を必要とするので、悪用されることはありません。代わりに、画像を外部サーバーに直接送信することもできますが、他のフォームデータをアプリケーションに送り返すか、別のフォームを使用して画像をアップロードする必要があります。
  2. 外部イメージングサービスを使用します。私はPicnikをお勧めします。 their API documentationを参照してください。ご覧のように、イメージをサーバーに直接ポストしてから、ユーザーがイメージを編集してサイズを変更できるようにすると、イメージがサーバーにポストバックされます。このソリューションでは、PicnikはすべてPOSTのデータを受信するため、別の形式で画像をアップロードする必要があります。

Google App Engineの制限を回避する必要はなく、ユーザーがカメラから直接画像をアップロードしているので、とにかくクロップ)

+0

のPicnikがきれいに見えます。リンクありがとう! –

7

これはApp Engineのドキュメントではっきりしませんが、これはBlobstoreとImage Manipulation Serviceの組み合わせを使用することで可能です。

あなたはする必要があります。

  1. は、画像のサイズが1MB未満になると画像操作を実行ブロブストア
  2. からイメージを取得ブロブストア
  3. に画像をアップロードし

私はこれについての投稿を書いた - >http://socialappdev.com/uploading-and-re-sizing-large-images-on-app-engine-11-2010

+1

グレートブログ記事!ドキュメントは次のことに注意しています:イメージサービスは、変換元としてBlobstore値を使用できます。ソースイメージは、Blobstore値の最大サイズと同じ大きさにすることができます。 Imageサービスは変換されたイメージをアプリケーションに返します。したがって、変換されたイメージは1メガバイトより小さくなければなりません。これは、ユーザーがアップロードした大きな写真のサムネイル画像を作成するのに便利です。 – DanJ

+1

最大サイズはドキュメントによれば32MB、今までの1MBの制限から上がっています – Anentropic

関連する問題