讨论关于图像过滤的一些问题

chenweionline 2005-06-08 11:18:55
最近学习图像处理,有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表示为什么会提高性能呢?
...全文
113 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
still05017 2005-08-08
  • 打赏
  • 举报
回复
ding
congliu 2005-06-21
  • 打赏
  • 举报
回复
不懂,学习
nwpulipeng 2005-06-12
  • 打赏
  • 举报
回复
不懂啊~~
pring_f 2005-06-10
  • 打赏
  • 举报
回复
我不会, 帮顶!!!!
chenweionline 2005-06-10
  • 打赏
  • 举报
回复
louisqiang(tenwin) :

RGBImageFilter类的抽象方法int filterRGB(intx, int y, int rgb)中,
无论设置canFilterIndexColorModel=true还是=false,传递进方法的都是像素的位置和像素的一个整形表示。那么设置canFilterIndexColorModel还有什么用呢?
换句话说,我设置了canFilterIndexColorModel=false;后,怎样可以得到传递进过滤器的每个像素而不是图像中每个颜色的RGB表示?
每个像素和每个颜色的RGB表示的区别我还是没弄清楚。
Goldrush 2005-06-09
  • 打赏
  • 举报
回复
沙发,帮顶,学习学习
harbor1981 2005-06-09
  • 打赏
  • 举报
回复
up
louisqiang 2005-06-09
  • 打赏
  • 举报
回复
估计象素使用int型吧,RGB使用3个字节型数据吧!过滤的时候不需要再做位运算。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧