📄 bctopimage.java
字号:
package com.esri.solutions.jitk.web.data.image;
import java.awt.image.Raster;
import java.awt.image.RenderedImage;
import java.awt.image.WritableRaster;
import java.util.Map;
import javax.media.jai.ImageLayout;
import javax.media.jai.PointOpImage;
@SuppressWarnings("unchecked")
public class BCTOpImage extends PointOpImage {
private byte m_brightness;
private byte m_contrast;
private TintParameters m_tint;
private RenderedImage m_source;
private double[] m_mean;
public BCTOpImage(RenderedImage img,
ImageLayout layout,
Map config,
boolean cobbleSources) {
super(img, layout, config, cobbleSources);
m_source = img;
}
public void setBrightness (byte b) {
m_brightness = b;
}
public void setContrast (byte c) {
m_contrast = c;
}
public void setTintParameters (TintParameters tint) {
m_tint = tint;
}
public void setMean (double[] mean) {
m_mean = mean;
}
@Override
public Raster computeTile(int tileX, int tileY) {
WritableRaster raster = null;
Raster tile = null;
tile = m_source.getTile(tileX, tileY);
raster = tile.createCompatibleWritableRaster(tile.getMinX(),
tile.getMinY(),
tile.getWidth(),
tile.getHeight());
double[] pixel = new double[tile.getNumBands()];
byte[] tint = new byte[tile.getNumBands()];
if (m_tint == null) {
for (int i = 0; i < tint.length; i++) {
tint[i] = 0;
}
} else {
tint[0] = m_tint.getRedOffset();
tint[1] = m_tint.getGreenOffset();
tint[2] = m_tint.getBlueOffset();
if (tint.length > 3) {
tint[3] = 0;
}
}
for (int i = 0; i < tile.getWidth(); i++) {
for (int j = 0; j < tile.getHeight(); j++) {
pixel = tile.getPixel(i + tile.getMinX(), j + tile.getMinY(), pixel);
for (int k = 0; k < pixel.length; k++) {
pixel[k] = (m_mean[k] + (pixel[k] - m_mean[k]) * m_contrast) + m_brightness + tint[k];
pixel[k] = Math.min(255, Math.max(0, pixel[k]));
}
raster.setPixel(i + tile.getMinX(), j + tile.getMinY(), pixel);
}
}
return raster;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -