3

アップロード後に画像のサイズを異なるピクセル寸法に変更する小さな Web アプリを構築しています。

3 MB の jpg 画像から 150px X 100px のサムネイルを作成しようとしていますが、68kb より小さいファイルサイズを取得できません (圧縮タイプなどに応じて、4kb と 15kb の間のファイルを生成すると予想されます)。

タグの action="resize" メソッドを使用し、ImageResize() および imageScaleToFit() 関数も使用しましたが、これらのメソッドはすべて、exif および IPTC メタ データをそのまま保持します (これがサムネイル ファイルをそのまま大きい)。

メタデータなしで画像を使用すると、サムネイルのサイズが期待どおりに小さなファイルサイズに変更されます。

とにかく、CF8の組み込みの画像関数を使用してサムネイルのサイズを縮小するために、画像からexifおよびIPTCメタデータを削除できますか?

4

4 に答える 4

3

Sanselan Java ライブラリを使用して、EXIF および IPTC メタデータを削除できます。このライブラリのremoveExifMetadataを使用したコード サンプルを次に示します。

<cfscript>
// setup and init the Sanselan library
SanselanPath = arrayNew(1);
arrayAppend(SanselanPath, expandPath("sanselan\sanselan-0.97-incubator.jar"));
javaloader = createObject("component", "javaloader.JavaLoader").init(SanselanPath);

// setup your source and destination image
pathToInFile = ExpandPath("myImage.jpg");
pathToOutFile = ExpandPath("MyImagewoEXIF.jpg");
inFile = javaloader.create("java.io.FileInputStream").init(pathToInFile);
outFile = javaloader.create("java.io.FileOutputStream").init(pathToOutFile);

// create the exifRewriter 
exifRewriter = javaloader.create("org.apache.sanselan.formats.jpeg.exifRewrite.ExifRewriter").init();

// call the method removeExifMetadata
exifRewriter.removeExifMetadata(inFile,outFile);
outFile.close();
</cfscript>

iptc.JpegIptcRewriterremoveIPTCメソッドを使用して、同じように IPTC メタデータを削除できます。CF 関数 ImageGetEXIFMetaData および ImageGetIPTCMetadata を使用して、すべてが削除されたことを確認できます。

ファイルサイズが本当に小さくなるかどうかはわかりませんが、教えてください:-)

于 2011-04-05T12:00:07.723 に答える
1

サムネイルと同じサイズの新しい画像を作成し、サムネイルImagePasteに貼り付けるために使用できます。ColdFusion は、貼り付け操作で EXIF データを保持しません。

于 2011-04-03T02:13:54.637 に答える
0

これをチェックしてください:使用

ImageWrite(imageObject,destination,0.9,true) returns small sized image (90% quality, overwrite="true")

それ以外の

ImageWrite(imageObject,destination,true,0.9) returns big sized image (quality="true" which is 1, overwrite="0.9" which is true)

ファイルサイズを小さくするには、品質比を0から1に選択します。

于 2011-04-08T12:30:16.253 に答える
0

必要に応じて、@Ciaran Archer が上記でリンクした投稿にリンクされているコマンド ライン ツールを使用し、コマンドを実行する bash コマンド (* nix/Mac) または bat コマンド (Windows) を記述してから使用できます。 CFExecute でそのコマンドを実行します。CFImageや画像メタデータを実際に扱ったことがないので、適切なコードを提供できませんでしたが、コマンドをファイルシステムにエクスポートしているため(ファイルを操作する)、おそらく最高のパフォーマンスが得られるでしょう。 .

于 2011-04-02T17:04:51.350 に答える