从目前为止看到的教程和信息中,Imagero只能从目录中读取图像。任何人之前使用Imagero lib并知道它是否可以直接从网址读取图像?
此外,我正在尝试执行图像处理,例如在jsp页面中使图像变暗/变亮。 imagero能为我实现这个目标吗?
我被困住了,需要一些建议。
Imagero:http://reader.imagero.com/
答案 0 :(得分:1)
正如Josh M所说,从Java中读取URL的最简单方法可能是使用ImageIO.read(url)
。
然而,使图像变暗或变亮的“Java方式”(BufferedImage
)是使用RescaleOp
。 Here是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();
}
注意第二种方法:强度越高=图像越暗。