coldfusion - 使用 CF8 cfimage 标签生成缩略图 - 图像元数据导致文件过大

标签 coldfusion thumbnails coldfusion-8 iptc

我正在构建一个小型网络应用程序,可以在上传图像后将图像调整为不同的像素尺寸。

我正在尝试从 3mb 的 jpg 图像创建 150px X 100px 的缩略图,但无法获得小于 68kb 的文件大小(我希望根据压缩类型等生成 4kb 和 15kb 之间的文件)。

我使用了标签的 action="resize"方法,还使用了 ImageResize() 和 imageScaleToFit() 函数,但所有这些方法都保持了 exif 和 IPTC 元数据的完整性(我假设这是保持缩略图文件尽可能大)。

如果我使用没有任何元数据的图像,它会按预期将缩略图调整为较小的文件大小。

我是否可以使用任何 CF8 的内置图像函数从图像中去除 exif 和 IPTC 元数据以减小缩略图大小?

最佳答案

您可以使用 Sanselan用于删除 EXIF 和 IPTC 元数据的 Java 库。以下是使用此库中的 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 验证是否已删除所有内容。

现在我不确定它是否真的会减小文件大小,让我知道:-)

关于coldfusion - 使用 CF8 cfimage 标签生成缩略图 - 图像元数据导致文件过大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5520444/

相关文章:

php - 在 codeigniter 中一次制作 2 个缩略图

PHP 裁剪在子文件夹中找到的图像以显示为缩略图

string - Coldfusion 字符串 == true 或空 == false?

jquery - 如何将 CSS 应用于 <cfloop> 的第一次迭代而不应用于后续迭代?

sql - 如何在 CFQUERY 中使用两个数据源?

coldfusion - 在 Coldfusion 8(或 10)中正确传递给加密 AES 的参数

coldfusion - 在继续之前检查实时数据源名称

coldfusion - 使用 ColdFusion 的 SAML 服务提供商

iframe - YouTube未加载高分辨率缩略图

xml - 在冷融合中使用 cfif