我花了很多时间研究一个允许我用Java比较图像的库.
我真的没有找到任何有用的东西,也许我的GoogleSearch技能不够高,所以我想我会问你们,如果你能指出我可以找到类似这样的方向.
基本上我想要做的是将两个图像相互比较,得到两个相似的值.像一个百分比左右.
我希望你们有一些我可以使用的东西,我不知道怎么写自己这样的东西......
PS:它不一定是Java,只是我的应用程序将运行的环境.
我需要以编程方式在我的应用程序中创建简单的图像.简单图像将具有黑色背景,其中文本在其中以编程方式创建.可能吗?
最近我在尝试显示图像文件时遇到问题.不幸的是,图像格式是TIFF格式,主要的网络浏览器不支持(因为我知道只有Safari支持这种格式).由于某些限制,我必须将此格式转换为主浏览器支持的其他格式.但是,当我尝试转换格式时,它给我带来了很多问题.
我在网上搜索过,虽然在这个链接中发布了类似的问题如何在Java中将TIF转换为PNG?"但我不能得到它提出的结果..
因此,我再次提出这个问题,希望能得到更好的解释和指导.
在完成提议的解决方案时,我遇到的问题很少:
1)根据Jonathan Feinberg提出的答案,需要安装JAI和JAI/ImageIO.但是,在我安装了它们之后,我仍然无法在Netbean 7.2中导入该文件.NetBean 7.2仍然建议导入默认的imageIO库.
2)当我使用默认的ImageIO库Read方法时,它将返回NULL值,我无法继续进行.
3)我还尝试了其他方法,例如使用BufferedOutputStream方法将TIFF文件转换为BIN文件,但结果文件大于11 MB,这太大而无法加载并最终加载失败.
if (this.selectedDO != null) {
String tempDO = this.selectedDO.DONo;
String inPath = "J:\\" + tempDO + ".TIF";
String otPath = "J:\\" + tempDO + ".bin";
File opFile = new File(otPath);
File inFile = new File(inPath);
BufferedInputStream input = null;
BufferedOutputStream output = null;
try {
input = new BufferedInputStream(new FileInputStream(inPath), DEFAULT_BUFFER_SIZE);
output = new BufferedOutputStream(new FileOutputStream(otPath), DEFAULT_BUFFER_SIZE);
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
int length;
while …Run Code Online (Sandbox Code Playgroud) 不久之前,我花了一些时间寻找方法来确定两个图像是否相同才能回答这个问题.我现在面临一个稍微不同的问题:我手边有大约两千张图像,其中一些具有相同的内容,但是彼此的缩放/旋转版本(旋转总是90°的倍数),以及不同的压缩和图像格式(主要是jpg,一些png,没有别的).缩放比例不超过大约2:1.我想做的是消除重复,同时保留最高质量的实例.由于Java是我非常熟练的唯一语言,我需要使用Java.
这些问题的答案,以一个不同的问题提供了许多有用的链接,但它并不像它们之间的任何可识别重复缩放/旋转时.
这个问题以及答案建议首先将所有图像缩放到非常小的尺寸(例如32*32或16*16),然后基本上进行一些散列,并基于散列进行比较.这对我来说听起来很聪明,图像可以在比较之前进行预先排序,这将在排序之后成为O(n)问题.但是,鉴于图像可能会旋转,我不知道如何处理它; 一种选择是手动浏览所有图像并决定旋转,因为它们所描绘的具有明确的方向(人眼可以非常容易地决定"向上"应该是哪种方式).如果可能的话,我想避免这样做.
是否有既定的方法/算法(链接提到SSIM)来处理这类问题,或者你们中的任何一个能提出比上述更好的方法吗?也许有人知道适合Java的Java库(在链接的问题中提到了OpenCV的Java包装器,然后是ImageJ,imgsclr)?任何帮助表示赞赏.
我正在为Android开发一个图像编辑应用程序.为此,我需要将我的图像转换为铅笔草图.
能帮到我吗?
ImageMagick的"转换"命令行工具允许您在执行操作时指定内存使用限制.我想找一个提供相同选项的Java图像大小调整库.我的应用程序有时会获得非常大的JPEG,并需要将它们下采样到合理的大小.例如,11600 x 5152图像将消耗大约227MB的内存,只需将其解压缩; 调整大小的过程比使用更多.
在Java中,有没有办法将非常大的图像调整到合理的大小而不在内存中解压缩整个图像?
我正在尝试收集有关所有Java开源库的信息,这些库专注于图像优化.
其中一个是pngtastic,但它只处理png图像.你知道其他类似的图书馆吗?
我正在编写一个Web应用程序,允许用户以多种格式上传图像(例如png,jpg,bmp).上传图像后,系统应将其转换为"png"并将其缩放到预定义的分辨率.
要转换图像,我使用方便的方法:
javax.imageio.ImageIO.write(im, type, baos);
Run Code Online (Sandbox Code Playgroud)
这是问题的起点.Image javax.imageio.ImageIO.write的第一个参数是RenderedImage.Java Doc声明唯一已知的实现是BufferedImage.
我试图找到一种方法将java.awt.Image转换为BufferedImage,但似乎不可能.但是,可以在BufferedImage上绘制图像.
问题是每次创建一个新的BufferedImage都非常昂贵.我可以开始创建一个BufferedImage池,但我正在寻找聪明/新闻的想法.
java ×9
image ×6
android ×2
comparison ×2
format ×1
jai ×1
open-source ×1
optimization ×1
scaling ×1
similarity ×1
tiff ×1