リモートの場所から画像を取得し、サイズを変更して 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 だと思います。確信はないけど。
手伝ってくれてありがとう!