我正在使用JAI爲圖像添加「邊框」。例如使用JAI,如何向調色板添加新顏色?
ParameterBlock pb = new ParameterBlock();
pb.addSource(r);
pb.add(leftPad);
pb.add(rightPad);
pb.add(topPad);
pb.add(bottomPad);
pb.add(new BorderExtenderConstant(consts));
r = JAI.create("border", pb);
上面的'consts'的值取決於ColorModel。當使用ComponentColorModel時,每個像素都有自己的顏色,所以我不必亂用調色板。當圖像具有調色板(GIF,PNG,...)時,ColorModel爲IndexColorModel。
當使用IndexColorModel時,'consts'是一個double []數組,大小爲1。數組中的值是調色板中的索引。
我發現瞭如何通過創建一個新的IndexColorModel來修改調色板,但是我必須編寫的邏輯將是瘋狂的! (例如,調色板中可以有多少種顏色取決於許多因素,另外,如果我需要從調色板中刪除顏色以添加新顏色,則需要確定哪種顏色最適合去除的邏輯,以及然後修改之前引用該顏色的所有像素 - 哇,這是很多代碼!)
所以,我的問題是,如何爲調色板添加顏色?是否有現有的圖書館?或者我應該使用ioimage的東西? (老實說,我有點困惑,在哪裏「結束」和ioimage「開始」)
另外,側面的問題,由於某種原因,我的測試圖像,只有約10顏色的調色板讀入有256種顏色。當我用jai保存圖像時,所有的256種顏色都被保存(11到255都是黑色的)。任何想法爲什麼這樣做?
謝謝! David