1

リモートの場所から画像を取得し、サイズを変更して Amazon S3 に保存しようとしています。

問題は、画像を S3 に保存することはできますが、表示しようとすると、ブラウザにimage can't be displayed because it contains errors. これは、次のことを行っているためだと確信しています。

a) 離れた場所から画像を取得:

  <cfhttp timeout="45" 
      throwonerror="no" 
      url="#variables.testFilePath#" 
      method="get" 
      useragent="Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12" 
      getasbinary="yes" 
      result="objGet">

b) 検証してサイズ変更する画像を作成する

<cfset objImage = ImageNew(objGet.FileContent);

c) サイズ変更後、サイズ変更された画像 (!) をバイナリ データに変換します。これは、次の S3.cfc への関数呼び出しで、画像を binaryData として再度読み取るための有効なファイル パスが必要だからです。私はこれをやっています:

 <cfset variables.filekey = toBase64( objImage )>

これの代わりに:

 <cffile action="readBinary" file="#arguments.uploadDir##arguments.fileKey#" variable="binaryFileData">

Valid を動作させることができないため、arguments.uploadDirここで画像を再読み込みする代わりに、バイナリ データに変換して S3 に保存するだけだと考えました。これにより、画像が base64 文字列に変換され、S3 に保存されます。

質問:
誰かが私が間違っていることを教えてもらえますか? base64 の getasbinary と toBase64 だと思います。確信はないけど。

手伝ってくれてありがとう!

4

1 に答える 1

1

バイナリに戻す必要はありません。cfimageタグを使用してディスクに書き込み、パスを使用してイメージを Amazon に送信するだけです。作業が完了したら、画像を削除します。

于 2012-08-11T01:36:33.260 に答える