使用 Imagemagick 进行 Java 处理

发布于 2024-10-30 07:14:56 字数 514 浏览 1 评论 0原文

我想调整图像大小,例如:convert 1.jpg -resize 250x240> 1.jpg 我写了一些这样的代码:

File f=new File(request.getRealPath("/")+"pics/"+d.getTime()+"_"+ttt+suffix);    
StringBuffer sb=new StringBuffer();
sb.append("'convert "+f.getAbsolutePath()+" -resize 250x240\\> "+f.getAbsolutePath()+"'");
String command=sb.toString();
Process p=Runtime.getRuntime().exec(command);
int returnv=p.waitFor();
System.out.println("command:"+command+" returnV:"+returnv);

但我发现,当我添加“>”时标记它,命令失败。我该如何解决这个问题?

I want to resize a image, for example: convert 1.jpg -resize 250x240> 1.jpg
I write some code like this:

File f=new File(request.getRealPath("/")+"pics/"+d.getTime()+"_"+ttt+suffix);    
StringBuffer sb=new StringBuffer();
sb.append("'convert "+f.getAbsolutePath()+" -resize 250x240\\> "+f.getAbsolutePath()+"'");
String command=sb.toString();
Process p=Runtime.getRuntime().exec(command);
int returnv=p.waitFor();
System.out.println("command:"+command+" returnV:"+returnv);

but I found that, when I add the '>' flag to it, the command fails. How can I solve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

恬淡成诗 2024-11-06 07:14:56

考虑使用 im4java,它是 ImageMagic 命令行工具的面向对象的 java 包装器。它准确地解决了您所面临的问题。

JMagic 是另一种选择。它在 ImageMagic C-API 周围提供了一个薄 JNI 层。

Consider using im4java which is a object oriented java wrapper around the ImageMagic command line tools. It solves exactly those problems that you are facing.

JMagic is another alternativ. It provides a thin JNI layer around the ImageMagic C-API.

ぽ尐不点ル 2024-11-06 07:14:56

> 字符不是转换命令的标志,而是将输出重定向到文件 1.jpg。您可以仅使用输出文件参数调用 convert 并避免重定向。而不是:

convert 1.jpg -resize 250x240> 1.jpg

使用

convert -resize 250x240 1.jpg 1_resized.jpg

顺便说一句,您正在转义反斜杠 -resize 250x240\\>,也许这不是必需的,您可以简单地编写 -resize 250x240 >

更新:也许您可以使用 JMagick(ImageMagick 的 Java 库),而不是执行系统进程来转换图像。

The > character is no flag to the convert command but a redirection of the output into the file 1.jpg. You could just call convert with an output file parameter and avoid the redirection. Instead of:

convert 1.jpg -resize 250x240> 1.jpg

use

convert -resize 250x240 1.jpg 1_resized.jpg

BTW, you are escaping you backslashes -resize 250x240\\>, maybe this is not necessary and you could simply write -resize 250x240 >.

Update: Maybe you could use JMagick, a Java library for ImageMagick, instead of executing a system process to convert your image.

蓝眼睛不忧郁 2024-11-06 07:14:56

运行时不会启动成熟的 shell。您当然可以调用 bash 来获取一个。

或者您可以创建一个线程来驻留在进程输出流上并将其写入输出文件。

Runtime doesn't fire up a fully-fledged shell. You can of course invoke bash to get one.

Or you can create a thread to sit on the process output stream and write it to an output file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文