📄 bctoprif.java
字号:
package com.esri.solutions.jitk.web.data.image;
import java.awt.RenderingHints;
import java.awt.image.IndexColorModel;
import java.awt.image.RenderedImage;
import java.awt.image.renderable.ParameterBlock;
import java.awt.image.renderable.RenderedImageFactory;
import javax.media.jai.ImageLayout;
import javax.media.jai.JAI;
import javax.media.jai.LookupTableJAI;
import javax.media.jai.RenderedOp;
public class BCTOpRIF implements RenderedImageFactory {
public RenderedImage create(ParameterBlock pb, RenderingHints hints) {
RenderedImage source = null;
source = pb.getRenderedSource(0);
if (source.getColorModel() instanceof IndexColorModel) {
source = convertToCCM(source);
}
double[] mean = calculateMean(source);
Byte contrast = 0;
Byte brightness = 0;
TintParameters tint = null;
brightness = (Byte)pb.getObjectParameter(0);
contrast = (Byte)pb.getByteParameter(1);
tint = (TintParameters) pb.getObjectParameter(2);
BCTOpImage output = new BCTOpImage(source, new ImageLayout(source), hints, false);
output.setBrightness(brightness);
output.setContrast(contrast);
output.setTintParameters(tint);
output.setMean(mean);
return output;
}
private RenderedImage convertToCCM (RenderedImage img) {
if (img.getColorModel() instanceof IndexColorModel) {
IndexColorModel cm = (IndexColorModel) img.getColorModel();
int mapSize = cm.getMapSize();
byte[][] table = new byte[3][mapSize];
cm.getReds(table[0]);
cm.getGreens(table[1]);
cm.getBlues(table[2]);
LookupTableJAI lookupTbl = new LookupTableJAI(table);
return JAI.create("lookup", img, lookupTbl);
}
return img;
}
private double[] calculateMean (RenderedImage img) {
ParameterBlock pb = new ParameterBlock();
pb.addSource(img);
RenderedOp op = JAI.create("mean", pb);
double[] mean = (double[]) op.getProperty("mean");
return mean;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -