新保存的图像文件没有重新调整大小吗?
问题的出现的原因是在创建缩略图时,没有提供指定的尺寸选项。解决方法是在创建缩略图时,使用size(width, height)
方法指定缩略图的尺寸。
Thumbnailator是一个用于Java的开源图像调整库,具有流畅的接口,并在MIT许可下分发。
我写了这个库是因为在Java中制作高质量的缩略图可能会出乎意料地困难,并且导致的代码可能会很混乱。使用Thumbnailator,可以使用简单的流畅API来表达相当复杂的任务。
一个简单的例子是,将一个图像调整为100 x 100(保留原始图像的纵横比),并将其保存到文件中,可以通过一条语句实现:
Thumbnails.of("path/to/image") .size(100, 100) .toFile("path/to/thumbnail");
Thumbnailator的流畅接口简化了执行复杂的调整任务。
假设我们想要进行以下操作:
1. 获取目录中的图像,
2. 将它们调整为100 x 100,保留原始图像的纵横比,
3. 将它们全部保存为JPEG,并设置质量为0.85,
4. 文件名采用原始文件名,并在开头添加"thumbnail."
使用Thumbnailator,我们可以通过以下方式实现上述操作:
Thumbnails.of(new File("path/to/directory").listFiles()) .size(100, 100) .outputFormat("JPEG") .outputQuality(0.85) .toFiles(Rename.PREFIX_DOT_THUMBNAIL);
这个库还使用了《Filthy Rich Clients》一书中提到的渐进式双线性缩放方法,以生成高质量的缩略图,同时确保可接受的运行时性能。
关于图像质量和速度的问题,这个库还支持流,适用于SSH客户端等应用。
如果想要创建一个80x80的缩略图,从一个500x400的原始图像中,可以使用size(80,80)
方法指定缩略图的尺寸,并使用crop(Positions.CENTER)
方法进行裁剪:
Thumbnails.of(..) .size(80, 80) .crop(Positions.CENTER) .toFile( ... );
使用Thumbnailator相比尝试使用Java原生方法,可以获得100%的质量改进。
以上就是关于(new saved Image file not Redimensioned?)问题的原因和解决方法的详细内容。
问题出现的原因:
在使用imgscalr这个Java图像缩放库时,有用户报告说在调用resize方法时出现了错误。错误信息是"The method resize(BufferedImage, int, BufferedImageOp...) in the type Scalr is not applicable for the arguments (Embedded, int)"。
问题的解决方法:
根据开发者的回答,问题出现的原因是传入的参数类型不正确。imgscalr只接受BufferedImage类型的参数,而传入的是Embedded类型的参数,所以出现了错误。由于Embedded类型在该上下文中没有定义,开发者猜测可能是在Android平台上使用imgscalr库导致的。因为Android平台缺少imgscalr所依赖的Java2D/ImageIO库。
最近,我发布了一个简单的Java图像缩放库,名为imgscalr。该库实现了几种不同的图像缩放方法,并且在调用时会自动选择最优的方法。使用该库非常简单,只需要调用几个静态方法即可。下面是一个简单的用例:
BufferedImage scaledImage = Scalr.resize(myImage, 200);
该方法会将图像缩放到宽度和高度都不超过200像素的范围内,同时保持图像的原始比例。
有用户报告说在调用resize方法时出现了错误,错误信息是"The method resize(BufferedImage, int, BufferedImageOp...) in the type Scalr is not applicable for the arguments (Embedded, int)"。经过分析,发现错误是由于传入的参数类型不正确导致的。imgscalr只接受BufferedImage类型的参数,而传入的是Embedded类型的参数,所以出现了错误。根据开发者的回答,可能是因为在Android平台上使用imgscalr库导致的。因为Android平台缺少imgscalr所依赖的Java2D/ImageIO库。
如果你想使用imgscalr库,但又不想使用Maven,你可以直接从Maven central下载jar包。
imgscalr是一个Java图像缩放库,提供了多种图像缩放方法。使用该库非常简单,只需要调用几个静态方法即可。但在使用过程中,需要注意传入的参数类型必须是BufferedImage类型,否则会出现错误。此外,imgscalr库在Android平台上无法使用,因为Android缺少必要的Java2D/ImageIO库。如果你想使用imgscalr库,但又不想使用Maven,可以直接从Maven central下载jar包。