⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bctoprif.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 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 + -