gpt4 book ai didi

java - 在 AEM 中使用 MagickQuick 进行图像压缩

转载 作者:行者123 更新时间:2023-11-30 06:12:44 27 4
gpt4 key购买 nike

我正在使用 ImageQuick Tool 来压缩 DAM 图像。我正在使用下面的代码片段进行转换。

try {
System.out.println(" Image is Processing :: " + assetDetails.getName() + "Original Size :: " + assetDetails.getSize());
ProcessBuilder pb = new ProcessBuilder("C:\\Program Files\\ImageMagick-6.9.9-Q16\\convert.exe", "-quality", "85%", assetDetails.getAssetNode().getPath(), assetDetails.getAssetNode().getPath());
pb.redirectErrorStream(true);

Process p = pb.start();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
System.out.println(p.waitFor());
session.save();

} catch (final IOException | RepositoryException | InterruptedException ex) {
ex.printStackTrace();
}

出现如下错误:

 Image is Processing :: A.jpgOriginal Size :: 323.8 KB
convert.exe: unable to open image `/content/dam/A.jpg': No such file or directory @ error/blob.c/OpenBlob/2761.
convert.exe: no images defined `/content/dam/A.jpg' @ error/convert.c/ConvertImageCommand/3258.

这里的代码正在从本地的/content/dam 中查找文件。如何对现有图像执行此操作。

如果我在路径之前添加服务器名称,则会出现以下错误:

convert.exe: no decode delegate for this image format `' @ error/constitute.c/ReadImage/504.
convert.exe: no data returned `http://localhost:4502/content/dam/A.jpg' @ error/url.c/ReadURLImage/247.
convert.exe: no images defined `http://localhost:4502/content/dam/A.jpg' @ error/convert.c/ConvertImageCommand/3258.

PFA* enter image description here

最佳答案

路径 /content/dam/A.jpg 是相对于 JCR 存储库的,而不是相对于实际文件系统的,因此会启动图像未找到异常。另外,您的 ImageMagick 安装路径的硬编码值 "C:\\Program Files\\ImageMagick-6.9.9-Q16\\convert.exe 恕我直言,它似乎不太灵活,因为它会在其他环境(测试、预生产、生产...)中可能有所不同。

实际上,如果您想使用 IM 来改进图像压缩,我建议您将自定义处理步骤添加到 DAM Update Asset 工作流程中。

例如,为了创建固定的 1140x1140 PNG 压缩呈现,我将使用:

<node1
jcr:primaryType="cq:WorkflowNode"
description="This process step uses IM PNG compression."
title="IM PNG Mime Type"
type="PROCESS">
<metaData
jcr:primaryType="nt:unstructured"
COMMANDS="convert ${directory}/${filename} -resize 1140x1140> -strip -depth 24 -define png:compression-filter=2 -define png:compression-level=9 -define png:compression-strategy=1 cq5dam.web.1140.1140.${extension}"
MIME_TYPES="image/png"
PROCESS="com.day.cq.dam.core.process.CommandLineProcess"
PROCESS_AUTO_ADVANCE="true"/>
</node1>

您可以在IM doc中阅读有关该命令的更多信息。如果您有兴趣将其集成到 OOTB AEM 工作流程中,请以上面的节点模型内容为例,或者看看这个描述得很好的 AEM Assets - best practices文章。

关于java - 在 AEM 中使用 MagickQuick 进行图像压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49876103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com