Java保存原始JPEG而不会丢失 - java

如下所示,我有第一张图像为原始JPEG图像。第二张图像用于缓冲图像,然后使用http://www.lac.inpe.br/JIPCookbook/6040-howto-compressimages.jsp以1.0质量保存。静止图像变得更小并且失真很小。是否可以按原样保存图像?请不要保存图像,因为它只是一个样本测试。添加文本后,我将以最高质量保存它,这也会丢失信息。

参考方案

即使原始图像数据来自JPEG,即使具有最高质量设置的JPEG始终会丢失。

有一些操作,例如旋转/镜像/裁剪,可以在JPEG上无损地进行(使用jpegtran之类的工具),但是这些操作很少见。

无论如何,似乎您可以访问原始的JPG图像,并且您没有更改它,所以我不明白为什么再次压缩它。

如果您确实必须无损地存储此类图像,最好的选择是使用JPEG2000的无损模式,这比使用JPG压缩的图像数据的其他替代方法(如PNG)的文件大小要小(尽管它仍比原始图像大得多) JPG)。例如,对于您的第一个示例图片:

 hAw2d.jpg ->   268,678 bytes (Original)
 hAw2d.jp2 -> 1,021,007 bytes (JPEG 2000, lossless)
 hAw2d.png -> 1,213,392 bytes (PNG)

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java:BigInteger,如何通过OutputStream编写它 - java

我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…

Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…

Java:从类中查找项目名称 - java

仅通过类的实例,如何使用Java反射或类似方法查找项目名称?如果不是,项目名称(我真正想要的是)可以找到程序包名称吗? 参考方案 项目只是IDE使用的简单组织工具,因此项目名称不是类或JVM中包含的信息。要获取软件包,请使用Class#getPackage()。然后,可以调用Package#getName()将包作为您在代码的包声明中看到的String来获取…

JAVA 8具有任何匹配属性的对象的过滤器列表 - java

我的要求是通过匹配任何属性的字符串来过滤对象列表。例如,假设Contact类具有三个属性:街道,城市,电话。我知道java流过滤器是如何工作的,在这里我必须将输入字符串与每个属性进行比较,如下所示:contactList.stream().filter(contact -> contact.getStreet().equals("dubai&…