0

coldfusion8/mysql 5.0.88Jquery Mobile のフロント エンドでサイトを作成しています。また、 photoswipe.jsプラグインも使用しています。これにより、画像をズームして別のビュー レイヤーで閲覧できます。

写真をスワイプできる画像を設定するには、出力する必要があります

<cfoutput>
<a class="swipeMe" rel="external" href="#variables.imageSrc#">
    <img src="#variables.imageSrc#" class="adaptImg ui-li-thumb" />
</a>
</cfoutput>

問題はimageSrcユーザーによって提供されるため、画像を表示する前に画像を取得/検証/サイズ変更する必要があり、写真のスワイプリンク用の画像のパスが必要です。

私はしばらくこれをいじっていて、次の解決策を思いつきました:

 // read img from user specs
 <cfimage name="myImage" source="#bildpfad##bilddateiname#" action="read" />
 <cfif IsImage(myImage) is true>
      // resize
      <cfscript>
           ImageSetAntialiasing(myImage,"on");
           variables.breite = 400;
           ImageScaleToFit(myImage, variables.breite,"", "highestPerformance");
      </cfscript>
      // write to xml, so I can get the path
      <cfxml variable="imageXml">
           <cfimage quality=".5" action="writetobrowser" source="#myImage#" class="adaptImg ui-li-thumb"/
      </cfxml>
      <cfset variables.imageSrc = imageXml.xmlRoot.xmlAttributes.src>
      // output
      <cfoutput>
         <a class="swipeMe" rel="external" href="#variables.imageSrc#">#imageXml#</a>
      </cfoutput>
 </cfif>

これは機能しますが、これを実行しているとますます多くのメモリが失われるため、アプリケーションがほとんど停止し、メモリもリークしているようです。

質問:
上記のコードでメモリ リークが発生する明らかな問題はありますか? 画像がある種の一時ディレクトリ (CFFileservelet?) に書き込まれ、しばらくそこにとどまり、メモリがブロックされていると想像します。もしそうなら、画像検索でこれを処理するための代替アプローチは何ですか?

ありがとう!

4

1 に答える 1

2

サーバーに /tmp フォルダーを作成して、操作した画像をそこに書き込んでみませんか。

<cfset newImageName=CreateUUID()&".jpg">
<cfimage action="write" destination="/tmp/#newImageName#" source="#myImage#">

次に、それを使用できます。

  <cfoutput>
     <a class="swipeMe" rel="external" href="/tmp/#newImageName#"><img src="/tmp/#newImageName#" class="..."></a>
  </cfoutput>

一時ファイルを削除するスケジュールされたタスクの例:

<cfdirectory action="LIST" directory="#expandpath('tmp/')#" name="tempfiles" filter="*.jpg">
<cfloop query="tempfiles">
    <cfif dateadd('h',24,dateLastModified) lt now()>
        <cffile action="DELETE" file="#expandpath('tmp/')##name#">
    </cfif>
</cfloop>
于 2012-08-24T13:27:07.860 に答える