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

📄 rgbfile.java

📁 JAVA3D矩陈的相关类
💻 JAVA
字号:
/* * $RCSfile: RgbFile.java,v $ * * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistribution of source code must retain the above copyright *   notice, this list of conditions and the following disclaimer. * * - Redistribution in binary form must reproduce the above copyright *   notice, this list of conditions and the following disclaimer in *   the documentation and/or other materials provided with the *   distribution. * * Neither the name of Sun Microsystems, Inc. or the names of * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * This software is provided "AS IS," without a warranty of any * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that this software is not designed, licensed or * intended for use in the design, construction, operation or * maintenance of any nuclear facility. * * $Revision: 1.4 $ * $Date: 2007/02/09 17:20:10 $ * $State: Exp $ */package com.sun.j3d.loaders.objectfile;import java.io.BufferedInputStream;import java.io.FileNotFoundException;import java.io.FileInputStream;import java.io.InputStream;import java.awt.image.BufferedImage;import java.io.IOException;import java.awt.image.DataBuffer;import java.awt.image.DataBufferByte;import java.awt.image.ComponentColorModel;import java.awt.image.WritableRaster;import java.awt.color.ColorSpace;import java.awt.Transparency;class RgbFile extends BufferedInputStream {    // Header data    short dimension;    short xSize;    short ySize;    short zSize;    String filename;    private static final int DEBUG = 0;    short getShort() throws IOException {	int t1 = (short)read();	if (t1 == -1) throw new IOException("Unexpected EOF");	int t2 = (short)read();	if (t2 == -1) throw new IOException("Unexpected EOF");	return (short)((t1 << 8) | t2);    } // End of getShort()    byte getByte() throws IOException {	int t = read();	if (t == -1) throw new IOException("Unexpected EOF");	return (byte)t;    } // End of getByte    int getInt() throws IOException {	int ret = 0;	for (int i = 0 ; i < 4 ; i++) {	    int t = read();	    if (t == -1) throw new IOException("Unexpected EOF");	    ret = (ret << 8) | t;	}	return ret;    } // end of getInt    public BufferedImage getImage() throws IOException {	short magic = getShort();	if (magic != 474) throw new IOException("Unrecognized file format.");	byte storage = getByte();	if (storage != 0)	    throw new IOException("RLE Compressed files not supported");    	byte bpc = getByte();	dimension = getShort();	xSize = getShort();	ySize = getShort();	zSize = getShort();	int pixMin = getInt();	int pixMax = getInt();	skip(84l);	int colorMap = getInt();	if ((DEBUG & 1) != 0) {	    System.out.println(filename + ":");	    System.out.println("  bpc = " + bpc);	    System.out.println("  dimension = " + dimension);	    System.out.println("  xSize = " + xSize);	    System.out.println("  ySize = " + ySize);	    System.out.println("  zSize = " + zSize);	    System.out.println("  pixMin = " + pixMin);	    System.out.println("  pixMax = " + pixMax);	    System.out.println("  colorMap = " + colorMap);	}	if ((pixMin != 0) || (pixMax != 0xff) || (colorMap != 0) || (bpc != 1))	    throw new IOException("Unsupported options in file");	skip(404l);	ComponentColorModel cm = null;	if (zSize == 1) {	    // Black and White image	    ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);	    int[] nBits = {8};	    cm = new ComponentColorModel(cs, nBits, false, false,					 Transparency.OPAQUE, 					 DataBuffer.TYPE_BYTE);	} else if (zSize == 2) {	    // Black and White image with alpha	    ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);	    int[] nBits = {8, 8};	    cm = new ComponentColorModel(cs, nBits, true, false,					 Transparency.TRANSLUCENT,					 DataBuffer.TYPE_BYTE);	} else if (zSize == 3) {	    // RGB Image	    ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);	    int[] nBits = {8, 8, 8};	    cm = new ComponentColorModel(cs, nBits, false, false,					 Transparency.OPAQUE,					 DataBuffer.TYPE_BYTE);	} else if (zSize == 4) {	    // RGBA Image	    ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);	    int[] nBits = {8, 8, 8, 8};	    cm = new ComponentColorModel(cs, nBits, true, false,					 Transparency.TRANSLUCENT,					 DataBuffer.TYPE_BYTE);	} else {	    throw new IOException("Unsupported options in file");	}	WritableRaster r = cm.createCompatibleWritableRaster(xSize, ySize);	BufferedImage bi = new BufferedImage(cm, r, false, null);	int t;	byte image[] = ((DataBufferByte)r.getDataBuffer()).getData();	for (short z = 0 ; z < zSize ; z++) {	    for (int y = ySize - 1 ; y >= 0 ; y--) {		for (short x = 0 ; x < xSize ; x++) {		    t = read();		    if (t == -1) throw new IOException("Unexpected EOF");		    image[y * (xSize * zSize) + (x * zSize) + z] = (byte)t;		}	    }	}	return bi;    } // End of getImage    public RgbFile(InputStream s) {	super(s);    } // End of RgbFile(URL)} // End of class RgbFile// End of file RgbFile.java

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -