使用Imagero Java库从网站读取图像

时间:2013-09-07 04:27:19

标签: java jsp image-processing

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

然而,使图像变暗或变亮的“Java方式”(BufferedImage)是使用RescaleOpHere是Chet Haase和Romain Guy的精彩教程。

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

答案 1 :(得分:0)

您不需要外部库来从URL下载图像;只是把它看作是你下载任何其他文件。幸运的是,ImageIO类提供了一个名为read(URL)的方法,可以找到here,专门用于下载图像。

至于修改BufferedImage,我建议循环宽度和高度(表示x和y)并使用BufferedImage#getRGB(int, int)获取行,列中每个像素的RGB并修改颜色并使用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();
}

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