PictureFilter——图像过滤类RGBImageFilter及图片文件读写类ImageIO的使用

本文介绍了一个简单的Java程序,用于实现图片的色彩过滤效果。通过继承RGBImageFilter类,自定义了图片过滤逻辑,并利用ImageIO类完成图片的读取与保存。文中还提供了关键代码示例。

实现“图片查看器”。要求可打开图片文件,能够使用某种颜色过滤图片,并保存图片文件。
要求:界面自定,参考例子MyPictureFilter
提示:需要用到图像过滤类RGBImageFilter和图片文件读写类ImageIO


说明:这是一个Java课程考查题目。这里只是简单实现了对图片(JPEG)的过滤、渲染,并进行保存。

参考例子及本题目源码已上传:http://download.youkuaiyun.com/source/3506433

关键代码:

class AnyFilter extends RGBImageFilter
{
	private int rgb;
	private boolean isFilter;
	
	public AnyFilter()
	{
		// The filter's operation does not depend on the
		// pixel's location, so IndexColorModels can be
		// filtered directly.
		canFilterIndexColorModel=true;
	}
	public AnyFilter(int rgb,boolean isFilterRender)
	{
		this.rgb=0xff000000 | rgb;
		isFilter=isFilterRender;
		
		canFilterIndexColorModel=true;
	}
	public AnyFilter(int r,int g,int b,boolean isFilterRender)
	{
		this.rgb=0xff000000 | (r << 16) | (g << 8) | b;
		isFilter=isFilterRender;
		
		canFilterIndexColorModel=true;
	}

	public int filterRGB(int x,int y,int rgb)
	{
		if (isFilter)
			return rgb & this.rgb;
		else
			return rgb | this.rgb;
	}
}
//toBufferedImage
	public BufferedImage toBufferedImage(Image image)
	{
		image=new ImageIcon(image).getImage();
		BufferedImage bufferedImage=new BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_RGB);
		Graphics g=bufferedImage.createGraphics();
		g.setColor(Color.white);
		g.fillRect(0,0,image.getWidth(null),image.getHeight(null));
		g.drawImage(image,0,0,null);
		g.dispose();
		
		return bufferedImage;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值