- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 2 个 jpeg,大约 16 000 x 24 000 像素。我必须旋转第二个并将其附加在第一个之上,就像这样
我在文档中找到了如何旋转 (MarvinImage.rotate),但我还没有找到可以附加 2 个图像的方法。
此外,也非常感谢其他可以做到这一点的库的任何建议。到目前为止我已经尝试过:
BufferedImage 和 ImageIO:占用大量内存,如果写入有效,可能会起作用(JPEGImageWriter 基本上提示图像太大 - 整数溢出)
ImageMagick 和 im4java - 可以工作,但速度非常慢(13 分钟,磁盘使用率 100%)
谢谢!
博格丹
最佳答案
libvips可以快速完成此操作并占用很少的内存,但不幸的是没有方便的 Java 绑定(bind)。您需要使用类似 pyvips 编写几行然后掏钱去做。
例如:
import sys
import pyvips
one = pyvips.Image.new_from_file(sys.argv[1])
two = pyvips.Image.new_from_file(sys.argv[2], access='sequential')
one.rot180().join(two, 'vertical').write_to_file(sys.argv[3])
new_from_file
上的 access=
提示in two
表示我们计划从上到下读取第二张图像,即。像素在 jpg 文件中出现的顺序相同。这将使 libvips 流式传输该图像,因此它可以将 two
的解码与输出图像的写入重叠。
在这台 2015 年笔记本电脑上,我看到:
$ vipsheader ~/pics/top.jpg ~/pics/bot.jpg
/home/john/pics/top.jpg: 16000x24000 uchar, 3 bands, srgb, jpegload
/home/john/pics/bot.jpg: 16000x24000 uchar, 3 bands, srgb, jpegload
$ /usr/bin/time -f %M:%e ./join.py ~/pics/top.jpg ~/pics/bot.jpg x.jpg
115236:27.85
$ vipsheader x.jpg
x.jpg: 16000x48000 uchar, 3 bands, srgb, jpegload
内存峰值为 115MB,实时运行时间为 28 秒。
这将为one
创建一个临时文件,以便它可以进行旋转。如果您可以使用大量内存,您可以尝试:
one = pyvips.Image.new_from_file(sys.argv[2], memory=True)
这将强制 libvips 通过内存区域打开。我现在看到:
$ /usr/bin/time -f %M:%e ./join.py ~/pics/top.jpg ~/pics/bot.jpg x.jpg
1216812:14.53
只有 15 秒的实时时间,但却痛苦地使用了 1.2GB 峰值内存。
关于java - 如何使用 Marvin java 库(或任何其他免费库)附加 2 个大图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55616116/
我最近找到了 Marvin,并且一直在摆弄它。不过,我遇到的主要瓶颈是没有提供太多文档。 Javadocs 页面稀疏,网站上提供的有用示例也很少。 其中大部分都可以拼凑起来并解决,但我真的希望所包含的
我正在使用 Marvin Image Processing Framework在 Java 中,我正在努力缩放图像。它只是制作一个黑色方 block ,你能看出我做错了什么吗?设置的阈值正在起作用。
我对 Marvin 图像处理框架中的 Erosion 插件有疑问。我想做侵 eclipse ,但不幸的是,在那之后我在输出中没有图像。这是我的代码: tempPlugin = new Erosion
我正在对图像中的对象进行分类。 我正在使用Marvin Image Processing Framework ,并且我成功分割了对象,但我想在图像上插入文本 这是我的图像分割的输出,我想按条件在对象上
我正在使用 Marvin Framework得到叶脉图案,但我不知道如何去除叶子轮廓 我正在做以下事情:(每个函数调用其对应的 Marvin Plugin。): MarvinImage sou
我有一组 marvin 示例项目。图像处理模块运行良好。 但是,当我尝试运行视频处理项目时,它会引发如下异常: Video Format not found Exception in thread "
我正在尝试运行 MarvinProject 网站上提供的示例: http://marvinproject.sourceforge.net/en/examples/videoFilters.html 那
FileNotFoundExecption thrown on acceccing jar using relfection on Jersey REST Web Service. java.io.F
我创建了一个通过相机捕获图像的 Activity ,现在我有了 Bitmap 格式的图像,我想从这里传递给这个插件类:该函数如下所示: public void process(MarvinImage
我有 2 个 jpeg,大约 16 000 x 24 000 像素。我必须旋转第二个并将其附加在第一个之上,就像这样 . 我在文档中找到了如何旋转 (MarvinImage.rotate),但我还没有
我是一名优秀的程序员,十分优秀!