'action = "writetobrowser"'を使用すると、ソースイメージのコピーが使用されます。ブラウザにプッシュされ、後で破棄される一時ファイルを作成します。
CF8ドキュメントからのフレーズは次のとおりです。
「writeToBrowserアクションを使用して、1つ以上のColdFusionイメージをファイルに書き込まずにブラウザに直接表示します。」
大きな写真(4608x3456)@3.47MBのCF8でコードをテストしました。ブラウザに表示されていた画像のサイズが400x300@247.47KBに変更されました。Firefoxを右クリックして使用しました| サイズ変更された画像情報を取得するには、画像情報を表示します。Firebug|を使用することもできます 送信された画像サイズを取得するためのネットタブ。
サイズ変更された画像は「/CFFileServlet/_cf_image/」にあります。
元のファイルのサイズ(#bildpfad ## billddateiname#)は変更されません。
一時的なものとして設計されたファイルの存在に依存しないでください。一時的とはそれだけを意味します。1つのサイズ変更のファイル名は、同じソースイメージであっても、10分後のサイズ変更で同じファイル名にならない場合があります。一時ファイルは、CFのバージョンによっても異なる方法で処理される場合があります。
サイズ変更された画像のコピーを保持する必要がある場合は、destination属性を指定してaction="write"またはaction="resize"を使用し、サイズ変更された画像のコピーをCFサーバーに保存します。
これがどのように機能するかのサンプルです:
<!---assume that bildpfad can be different domains/folders--->
<!---RegEx = remove protocol, replace '/' with '!', replace '.' with '~'--->
<cfset slashReplacement = "!">
<cfset periodReplacement = "~">
<cfset imageFilename = REReplace(REReplace(REReplaceNoCase(bildpfad, "https?://", "", "one"), "\/", slashReplacement, "all"), "\.", periodReplacement, "all") & bilddateiname>
<!---resizedImgDestination is a web path--->
<cfset resizedImgDestination = "/images/resized/rs_#imageFilename#">
<!---debug info, can comment out when working--->
<cfoutput>source = [#bildpfad##bilddateiname#]<br />destination = [#ExpandPath(resizedImgDestination)#]<br /></cfoutput>
<!---/debug info, can comment out when working--->
<cfif NOT FileExists(ExpandPath(resizedImgDestination))>
<cfhttp url="#bildpfad##bilddateiname#" result="stGetImg" resolveurl="no" useragent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1" timeout="45" getasbinary="yes" throwonerror="no" />
<cfset myImage = ImageNew(stGetImg.FileContent)>
<cfif IsImage(myImage)>
<cfimage action="resize" destination="#ExpandPath(resizedImgDestination)#" height="" isbase64="false" overwrite="true" source="#myImage#" width="400" />
</cfif>
</cfif>
<cfoutput><img src="#resizedImgDestination#" /></cfoutput>
高さを空の文字列のままにしておくと、幅に比例して高さのサイズとスケーリングが変更されます。
サイトのWebルートから「/images/resized/」フォルダを作成する必要があります。
ExpandPath()は、静的パス定義を使用するよりも優れています。サイトを別のサーバーまたはOSに移動する必要がある場合は、時間を大幅に節約できます。
注:質問の変数の使用に合うように、上記のコードを更新しました。画像の読み方も変更しました。CHF 4+ホットフィックスがインストールされたCF8.01を使用していますが、リモートファイルの読み取り時にcfimageでエラーが発生しました(JPG処理で例外が発生しました。セグメントサイズがファイルストリームの長さを超えます)。私の解決策は、代わりにcfhttpを使用して画像を読み取ることでした。また、より適切な名前の変数「resizedImgDestination」を使用するようにコードを更新しました。