最近学习图像处理,有2个问题不太明白,哪出来想和大家讨论一下,希望明白的朋友不吝赐教,不懂的朋友也能学到东西。1、我们知道扩展ImageFilter类可以实现自定义的图像过滤器,ImageFilter实现了ImageConsumer接口。ImageConsumer接口定义了以下2个重载方法,用来实际传输源图像的像素:
void setPixels(intx, int y, int w, int h, ColorModel model, byte[] pixels, int offset, int scansize)
void setPixels(intx, int y, int w, int h, ColorModel model, int[] pixels, int offset, int scansize)《Java2 图形设计》第6章有这么一段描述(P91):"一但图像生产开始进行,图像生产者将调用其中一个图像消费者的被重载的setPixels()方法。setPixels()可以被调用一次,所以传输的就是整个图像;setPixels()也可以被多次调用,每次调用只传输图像的一部分。"我们编程实现新的图像过滤器时,setPixels()被调用的次数能够控制吗?每次怎样将图像的一部分传进setPixels()?换句话说,如果能够控制setPixels()被调用的次数,每次只需传递一部分图像给图像消费者是否就能够节省部分内存?
2、抽象类RGBImageFilter扩展ImageFilter,它包含一个proteced boolean 成员 canFilterIndexColorModel。《Java2 图形设计》第6章(P100)中关于它的解释是:"如果RGBImageFilter的一个扩展设置这个变量的值为true,则图像将不向过滤器传递图像中的每个像素,而扩展将传递图像中每个颜色的RGB表示。这种方法将会提高性能,尤其对大图像来说。"这段话应该怎么理解?"传递图像中的每个像素"如何理解?像素总得有个形式吧?图像中的每个像素和图像中每个颜色的RGB表示有什么不同?使用颜色的RGB表示为什么会提高性能呢?
void setPixels(intx, int y, int w, int h, ColorModel model, byte[] pixels, int offset, int scansize)
void setPixels(intx, int y, int w, int h, ColorModel model, int[] pixels, int offset, int scansize)《Java2 图形设计》第6章有这么一段描述(P91):"一但图像生产开始进行,图像生产者将调用其中一个图像消费者的被重载的setPixels()方法。setPixels()可以被调用一次,所以传输的就是整个图像;setPixels()也可以被多次调用,每次调用只传输图像的一部分。"我们编程实现新的图像过滤器时,setPixels()被调用的次数能够控制吗?每次怎样将图像的一部分传进setPixels()?换句话说,如果能够控制setPixels()被调用的次数,每次只需传递一部分图像给图像消费者是否就能够节省部分内存?
2、抽象类RGBImageFilter扩展ImageFilter,它包含一个proteced boolean 成员 canFilterIndexColorModel。《Java2 图形设计》第6章(P100)中关于它的解释是:"如果RGBImageFilter的一个扩展设置这个变量的值为true,则图像将不向过滤器传递图像中的每个像素,而扩展将传递图像中每个颜色的RGB表示。这种方法将会提高性能,尤其对大图像来说。"这段话应该怎么理解?"传递图像中的每个像素"如何理解?像素总得有个形式吧?图像中的每个像素和图像中每个颜色的RGB表示有什么不同?使用颜色的RGB表示为什么会提高性能呢?
解决方案 »
- org.apache.commons.httpclient的问题
- 请教“Quartz”这个框架的启动方式。
- csdn 论坛的这个编辑器
- 关于可变数目的参数的问题 苦恼中
- 读入一个文本文件?
- 请教一个小问题,如下代码,不去掉注释和去掉注释的两者代码执行效果不一致,是在构造函数中定义了progress执行和用JButton定义的消息函
- 请教序列化对象的问题!
- CropImageFilter怎么用?
- 我现在用JAVA做了一个应用程序,但我不会打包,请告诉我打包程序的下载地址,最好有使用方法
- 有关jdbc与stored procedure
- 求使用Java在内存中生成每通道16位或32位的图像,及对其进行操作和显示的方法。
- 请问如何取得触发ChangeEvent事件的属性名?
无论设置canFilterIndexColorModel=true还是=false,传递进方法的都是像素的位置和像素的一个整形表示。那么设置canFilterIndexColorModel还有什么用呢?
换句话说,我设置了canFilterIndexColorModel=false;后,怎样可以得到传递进过滤器的每个像素而不是图像中每个颜色的RGB表示?
每个像素和每个颜色的RGB表示的区别我还是没弄清楚。