0

从我目前看到的教程和信息来看,Imagero 只能从目录中读取图像。任何人之前都使用过 Imagero lib,并且知道它是否可以直接从 url 读取图像?

另外,我正在尝试执行图像处理,例如使 jsp 页面中的图像变暗/变亮。imagero 可以为我实现这一目标吗?

我被困住了,需要一些建议。

Imagero:http: //reader.imagero.com/

4

2 回答 2

1

正如 Josh M 所说,在 Java 中从 URL 读取图像的最简单方法可能是使用ImageIO.read(url).

但是,使图像变暗或变亮的“Java 方式”(a BufferedImage)是使用RescaleOp. 是 Chet Haase 和 Romain Guy 的优秀教程。

RescaleOp经过高度优化,并且在大多数平台上使用本机代码,因此它肯定比在 Java 中循环遍历每个像素要快。

于 2013-09-09T17:44:11.700 回答
0

您不需要外部库来从 URL 下载图像;只需将其视为您正在下载任何其他文件。幸运的是,ImageIO 类提供了一个名为的方法read(URL),可以在此处找到该方法专门用于下载图像。

至于修改BufferedImage,我建议循环遍历宽度和高度(表示 x 和 y)并获取行、列中每个像素的 RGB,BufferedImage#getRGB(int, int)并使用修改颜色并在该位置设置颜色BufferedImage#setRGB(int, int, int)

我可以想到两种不同的方法来使图像变暗:一种方法是循环遍历每个 x,y 并使每种颜色变暗,另一种方法是在图像上绘制一个半透明的屏幕,这两种方法都将在下面显示:

public void darken(final BufferedImage image){
    for(int x = 0; x < image.getWidth(); x++)
        for(int y = 0; y < image.getHeight(); y++)
            image.setRGB(x, y, new Color(image.getRGB(x, y)).darker().getRGB());
}

public void darken(final BufferedImage image, final int intensity){
    assert intensity >= 0 && intensity <= 255;
    final Graphics g = image.getGraphics();
    g.setColor(new Color(0, 0, 0, intensity));
    g.fillRect(0, 0, image.getWidth(), image.getHeight());
    g.dispose();
}

注意第二种方法:强度越高=图像越暗。

于 2013-09-07T04:34:53.977 回答