aru*_*uns 5 java image-processing
哪个是最好的java库来进行裁剪.目的是在2倍变焦时保持裁剪图像的清晰度.裁剪图像的边缘变得模糊,同时缩放到2X水平.我尝试使用Java高级成像(JAI)来渲染裁剪提示.我也尝试使用RescaleDescriptor(JAI)来增强图像.但它只适用于白色背景中的黑色粒子.我可以使用其他任何库吗?
使用Thumbnailator,可以使用以下代码裁剪原始图像并放大到该区域:
Thumbnails.of("/path/to/image")
.sourceRegion(Positions.CENTER, 100, 100)
.scale(2.0)
.resizer(Resizers.BICUBIC)
.toFile("/path/to/cropped+zoomed-image");
Run Code Online (Sandbox Code Playgroud)
以上将采用源图像的中心100像素乘100像素区域,并使用双三次插值将其放大2.0倍的缩放因子,以产生没有锯齿状边缘的平滑图像:
源图像(左)由Thumbnailator(右)裁剪和放大http://coobird.net/img/zoom-in.jpg
虽然Thumbnailator是一个专门创建缩略图(因此名称)的库,但它通常也可以用来创建放大的图像.
完全披露:我是Thumbnailator的开发者.
在使用外部库之前,请尝试设置这些渲染提示(用于"正常"摆动渲染):
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR); // or .._BICUBIC
g.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
Run Code Online (Sandbox Code Playgroud)
以下代码生成此屏幕截图:

public static void main(String[] args) throws IOException {
BufferedImage o = ImageIO.read(new URL("http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png"));
final BufferedImage image = o.getSubimage(220, 220, 80, 80);
final int width = image.getWidth() * 4;
final int height = image.getHeight() * 4;
JFrame frame = new JFrame("Test");
frame.setLayout(new GridLayout(1, 2));
frame.add(new JComponent() {
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.drawImage(image, 0, 0, width, height, null);
}
});
frame.add(new JComponent() {
public void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, width, height, null);
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(649, 351);
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
我推荐ImageJ,一个很棒的图像处理库。
这是裁剪的代码示例:
ImageProcessor ip = //... get the image processor to crop
ip.setRoi(left,top,width,height); //set the "Region Of Interest" (rectangle within the image)
ImageProcessor ip2 = ip.crop();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3201 次 |
| 最近记录: |