java.awt.image.DataBuffer#getDataType()源码实例Demo

下面列出了java.awt.image.DataBuffer#getDataType() 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Pixelitor   文件: PartialImageEdit.java
private static void debugRaster(String name, Raster raster) {
    if (raster == null) {
        System.err.printf("PartialImageEdit::debugRaster: NULL RASTER, name = '%s'%n", name);
        return;
    }
    Rectangle rasterBounds = raster.getBounds();
    String className = raster.getClass().getSimpleName();
    DataBuffer dataBuffer = raster.getDataBuffer();
    int dataType = dataBuffer.getDataType();
    String typeAsString = Debug.dateBufferTypeAsString(dataType);
    int numBanks = dataBuffer.getNumBanks();
    int numBands = raster.getNumBands();
    int numDataElements = raster.getNumDataElements();

    String msg = format("className = %s, rasterBounds = %s, dataType = %d, " +
            "typeAsString=%s, numBanks = %d, numBands = %d, numDataElements = %d",
        className, rasterBounds, dataType,
        typeAsString, numBanks, numBands, numDataElements);

    System.out.println("PartialImageEdit::debugRaster debugging raster: " + name + ": " + msg);
}
 
源代码2 项目: commons-imaging   文件: RgbeImageParser.java
@Override
public BufferedImage getBufferedImage(final ByteSource byteSource, final Map<String, Object> params)
        throws ImageReadException, IOException {
    try (RgbeInfo info = new RgbeInfo(byteSource)) {
        // It is necessary to create our own BufferedImage here as the
        // org.apache.commons.imaging.common.IBufferedImageFactory interface does
        // not expose this complexity
        final DataBuffer buffer = new DataBufferFloat(info.getPixelData(),
                info.getWidth() * info.getHeight());

        final BufferedImage ret = new BufferedImage(new ComponentColorModel(
                ColorSpace.getInstance(ColorSpace.CS_sRGB), false, false,
                Transparency.OPAQUE, buffer.getDataType()),
                Raster.createWritableRaster(
                        new BandedSampleModel(buffer.getDataType(),
                                info.getWidth(), info.getHeight(), 3),
                        buffer,
                        new Point()), false, null);
        return ret;
    }
}
 
源代码3 项目: cosmic   文件: RawRect.java
@Override
public void paint(final BufferedImage image, final Graphics2D graphics) {

    final DataBuffer dataBuf = image.getRaster().getDataBuffer();

    switch (dataBuf.getDataType()) {

        case DataBuffer.TYPE_INT: {
            // We chose RGB888 model, so Raster will use DataBufferInt type
            final DataBufferInt dataBuffer = (DataBufferInt) dataBuf;

            final int imageWidth = image.getWidth();
            final int imageHeight = image.getHeight();

            // Paint rectangle directly on buffer, line by line
            final int[] imageBuffer = dataBuffer.getData();
            for (int srcLine = 0, dstLine = y; srcLine < height && dstLine < imageHeight; srcLine++, dstLine++) {
                try {
                    System.arraycopy(buf, srcLine * width, imageBuffer, x + dstLine * imageWidth, width);
                } catch (final IndexOutOfBoundsException e) {
                    s_logger.info("[ignored] buffer overflow!?!", e);
                }
            }
            break;
        }

        default:
            throw new RuntimeException("Unsupported data buffer in buffered image: expected data buffer of type int (DataBufferInt). Actual data buffer type: " +
                    dataBuf.getClass().getSimpleName());
    }
}
 
源代码4 项目: cloudstack   文件: RawRect.java
@Override
public void paint(BufferedImage image, Graphics2D graphics) {

    DataBuffer dataBuf = image.getRaster().getDataBuffer();

    switch (dataBuf.getDataType()) {

    case DataBuffer.TYPE_INT: {
        // We chose RGB888 model, so Raster will use DataBufferInt type
        DataBufferInt dataBuffer = (DataBufferInt)dataBuf;

        int imageWidth = image.getWidth();
        int imageHeight = image.getHeight();

        // Paint rectangle directly on buffer, line by line
        int[] imageBuffer = dataBuffer.getData();
        for (int srcLine = 0, dstLine = y; srcLine < height && dstLine < imageHeight; srcLine++, dstLine++) {
            try {
                System.arraycopy(buf, srcLine * width, imageBuffer, x + dstLine * imageWidth, width);
            } catch (IndexOutOfBoundsException e) {
                s_logger.info("[ignored] buffer overflow!?!", e);
            }
        }
        break;
    }

    default:
        throw new RuntimeException("Unsupported data buffer in buffered image: expected data buffer of type int (DataBufferInt). Actual data buffer type: " +
                dataBuf.getClass().getSimpleName());
    }
}
 
源代码5 项目: MikuMikuStudio   文件: AWTLoader.java
private Object extractImageData(BufferedImage img){
    DataBuffer buf = img.getRaster().getDataBuffer();
    switch (buf.getDataType()){
        case DataBuffer.TYPE_BYTE:
            DataBufferByte byteBuf = (DataBufferByte) buf;
            return byteBuf.getData();
        case DataBuffer.TYPE_USHORT:
            DataBufferUShort shortBuf = (DataBufferUShort) buf;
            return shortBuf.getData();
    }
    return null;
}
 
源代码6 项目: sambox   文件: JBIG2Filter.java
@Override
public DecodeResult decode(InputStream encoded, OutputStream decoded, COSDictionary
        parameters, int index) throws IOException
{
    ImageReader reader = findImageReader("JBIG2", "jbig2-imageio is not installed");
    if (reader.getClass().getName().contains("levigo"))
    {
        logLevigoDonated();
    }

    DecodeResult result = new DecodeResult(new COSDictionary());
    result.getParameters().addAll(parameters);

    int bits = parameters.getInt(COSName.BITS_PER_COMPONENT, 1);
    COSDictionary params = getDecodeParams(parameters, index);

    COSStream globals = null;
    if (params != null)
    {
        globals = (COSStream) params.getDictionaryObject(COSName.JBIG2_GLOBALS);
    }

    ImageInputStream iis = null;
    try
    {
        if (globals != null)
        {
            iis = ImageIO.createImageInputStream(
                    new SequenceInputStream(globals.getUnfilteredStream(), encoded));
            reader.setInput(iis);
        }
        else
        {
            iis = ImageIO.createImageInputStream(encoded);
            reader.setInput(iis);
        }

        BufferedImage image;
        try
        {
            image = reader.read(0, reader.getDefaultReadParam());
        }
        catch (Exception e)
        {
            // wrap and rethrow any exceptions
            throw new IOException("Could not read JBIG2 image", e);
        }

        // I am assuming since JBIG2 is always black and white
        // depending on your renderer this might or might be needed
        if (image.getColorModel().getPixelSize() != bits)
        {
            if (bits != 1)
            {
                LOG.warn("Attempting to handle a JBIG2 with more than 1-bit depth");
            }
            BufferedImage packedImage = new BufferedImage(image.getWidth(), image.getHeight(),
                    BufferedImage.TYPE_BYTE_BINARY);
            Graphics graphics = packedImage.getGraphics();
            graphics.drawImage(image, 0, 0, null);
            graphics.dispose();
            image = packedImage;
        }

        DataBuffer dBuf = image.getData().getDataBuffer();
        if (dBuf.getDataType() == DataBuffer.TYPE_BYTE)
        {
            decoded.write(((DataBufferByte) dBuf).getData());
        }
        else
        {
            throw new IOException("Unexpected image buffer type");
        }
    }
    finally
    {
        if (iis != null)
        {
            iis.close();
        }
        reader.dispose();
    }

    return new DecodeResult(parameters);
}
 
源代码7 项目: geowave   文件: DataBufferPersistenceUtils.java
public static byte[] getDataBufferBinary(final DataBuffer dataBuffer) {
  final DataBufferProtos.DataBuffer.Builder bldr = DataBufferProtos.DataBuffer.newBuilder();
  bldr.setType(dataBuffer.getDataType());
  bldr.addAllOffsets(Ints.asList(dataBuffer.getOffsets()));
  bldr.setSize(dataBuffer.getSize());
  switch (dataBuffer.getDataType()) {
    case DataBuffer.TYPE_BYTE:
      final ByteDataBuffer.Builder byteBldr = ByteDataBuffer.newBuilder();
      final byte[][] byteBank = ((DataBufferByte) dataBuffer).getBankData();
      final Iterable<ByteString> byteIt = () -> new Iterator<ByteString>() {
        private int index = 0;

        @Override
        public boolean hasNext() {
          return byteBank.length > index;
        }

        @Override
        public ByteString next() {
          if (!hasNext()) {
            throw new NoSuchElementException();
          }
          return ByteString.copyFrom(byteBank[index++]);
        }
      };
      byteBldr.addAllBanks(byteIt);
      bldr.setByteDb(byteBldr.build());
      break;
    case DataBuffer.TYPE_SHORT:
      setBuilder(shortToInt(((DataBufferShort) dataBuffer).getBankData()), bldr);
      break;
    case DataBuffer.TYPE_USHORT:
      setBuilder(shortToInt(((DataBufferUShort) dataBuffer).getBankData()), bldr);
      break;
    case DataBuffer.TYPE_INT:
      setBuilder(((DataBufferInt) dataBuffer).getBankData(), bldr);
      break;
    case DataBuffer.TYPE_FLOAT:
      final FloatDataBuffer.Builder fltBldr = FloatDataBuffer.newBuilder();
      final float[][] fltBank = ((DataBufferFloat) dataBuffer).getBankData();
      final Iterable<FloatArray> floatIt = () -> new Iterator<FloatArray>() {
        private int index = 0;

        @Override
        public boolean hasNext() {
          return fltBank.length > index;
        }

        @Override
        public FloatArray next() {
          return FloatArray.newBuilder().addAllSamples(Floats.asList(fltBank[index++])).build();
        }
      };
      fltBldr.addAllBanks(floatIt);
      bldr.setFlt(fltBldr);
      break;
    case DataBuffer.TYPE_DOUBLE:
      final DoubleDataBuffer.Builder dblBldr = DoubleDataBuffer.newBuilder();
      final double[][] dblBank = ((DataBufferDouble) dataBuffer).getBankData();
      final Iterable<DoubleArray> dblIt = () -> new Iterator<DoubleArray>() {
        private int index = 0;

        @Override
        public boolean hasNext() {
          return dblBank.length > index;
        }

        @Override
        public DoubleArray next() {
          return DoubleArray.newBuilder().addAllSamples(Doubles.asList(dblBank[index++])).build();
        }
      };
      dblBldr.addAllBanks(dblIt);
      bldr.setDbl(dblBldr);
      break;
    default:
      throw new RuntimeException(
          "Unsupported DataBuffer type for serialization " + dataBuffer.getDataType());
  }
  return bldr.build().toByteArray();
}
 
源代码8 项目: cloudstack   文件: BufferedImagePixelsAdapter.java
@Override
public void handleData(ByteBuffer buf, Link link) {
    if (verbose)
        s_logger.debug("[" + this + "] INFO: Data received: " + buf + ".");

    int x = (Integer)buf.getMetadata(TARGET_X);
    int y = (Integer)buf.getMetadata(TARGET_Y);
    int rectWidth = (Integer)buf.getMetadata(WIDTH);
    int rectHeight = (Integer)buf.getMetadata(HEIGHT);
    String format = (String)buf.getMetadata(PIXEL_FORMAT);

    int bpp;
    // Support RGB888/32 little endian only
    if (format != null && RGB888LE32.equals(format)) {
        bpp = 4;
        // TODO: support more formats
    } else
        throw new RuntimeException("Unsupported format: " + format + ". Supported formats: " + RGB888LE32 + ".");

    int dataLength = rectWidth * rectHeight * bpp;
    if (!cap(buf, dataLength, dataLength, link, false))
        return;

    // Draw rectangle on offline buffer
    BufferedImage image = canvas.getOfflineImage();

    DataBuffer dataBuf = image.getRaster().getDataBuffer();

    switch (dataBuf.getDataType()) {

    case DataBuffer.TYPE_INT: {

        // Convert array of bytes to array of int's
        int[] intArray = buf.toIntLEArray();

        // We chose RGB888 model, so Raster will use DataBufferInt type
        DataBufferInt dataBuffer = (DataBufferInt)dataBuf;

        int imageWidth = image.getWidth();
        int imageHeight = image.getHeight();

        // Paint rectangle directly on buffer, line by line
        int[] imageBuffer = dataBuffer.getData();

        for (int srcLine = 0, dstLine = y; srcLine < rectHeight && dstLine < imageHeight; srcLine++, dstLine++) {
            try {
                System.arraycopy(intArray, srcLine * rectWidth, imageBuffer, x + dstLine * imageWidth, rectWidth);
            } catch (IndexOutOfBoundsException e) {
                s_logger.info("[ignored] copy error",e);
            }
        }
        break;
    }

    default:
        throw new RuntimeException("Unsupported data buffer in buffered image: expected data buffer of type int (DataBufferInt). Actual data buffer type: "
                + dataBuf.getClass().getSimpleName());
    }

    // Request update of repainted area
    canvas.repaint(x, y, rectWidth, rectHeight);

    buf.unref();
}
 
源代码9 项目: scifio   文件: BufferedImageTools.java
/**
 * Gets the pixel type of the given image.
 *
 * @return One of the following types:
 *         <ul>
 *         <li>FormatReader.INT8</li>
 *         <li>FormatReader.UINT8</li>
 *         <li>FormatReader.INT16</li>
 *         <li>FormatReader.UINT16</li>
 *         <li>FormatReader.INT32</li>
 *         <li>FormatReader.UINT32</li>
 *         <li>FormatReader.FLOAT</li>
 *         <li>FormatReader.DOUBLE</li>
 *         <li>-1 (unknown type)</li>
 *         </ul>
 */
public static int getPixelType(final BufferedImage image) {
	final Raster raster = image.getRaster();
	if (raster == null) return -1;
	final DataBuffer buffer = raster.getDataBuffer();
	if (buffer == null) return -1;

	if (buffer instanceof SignedByteBuffer) {
		return FormatTools.INT8;
	}
	else if (buffer instanceof SignedShortBuffer) {
		return FormatTools.INT16;
	}
	else if (buffer instanceof UnsignedIntBuffer) {
		return FormatTools.UINT32;
	}

	final int type = buffer.getDataType();
	final int imageType = image.getType();
	switch (type) {
		case DataBuffer.TYPE_BYTE:
			return FormatTools.UINT8;
		case DataBuffer.TYPE_DOUBLE:
			return FormatTools.DOUBLE;
		case DataBuffer.TYPE_FLOAT:
			return FormatTools.FLOAT;
		case DataBuffer.TYPE_INT:
			if (imageType == BufferedImage.TYPE_INT_RGB ||
				imageType == BufferedImage.TYPE_INT_BGR ||
				imageType == BufferedImage.TYPE_INT_ARGB)
			{
				return FormatTools.UINT8;
			}
			if (buffer instanceof UnsignedIntBuffer) {
				return FormatTools.UINT32;
			}
			return FormatTools.INT32;
		case DataBuffer.TYPE_SHORT:
			return FormatTools.INT16;
		case DataBuffer.TYPE_USHORT:
			if (imageType == BufferedImage.TYPE_USHORT_555_RGB ||
				imageType == BufferedImage.TYPE_USHORT_565_RGB)
			{
				return FormatTools.UINT8;
			}
			return FormatTools.UINT16;
		default:
			return -1;
	}
}
 
源代码10 项目: scifio   文件: AWTImageTools.java
/**
 * Gets the pixel type of the given image.
 *
 * @return One of the following types:
 *         <ul>
 *         <li>FormatReader.INT8</li>
 *         <li>FormatReader.UINT8</li>
 *         <li>FormatReader.INT16</li>
 *         <li>FormatReader.UINT16</li>
 *         <li>FormatReader.INT32</li>
 *         <li>FormatReader.UINT32</li>
 *         <li>FormatReader.FLOAT</li>
 *         <li>FormatReader.DOUBLE</li>
 *         <li>-1 (unknown type)</li>
 *         </ul>
 */
public static int getPixelType(final BufferedImage image) {
	final Raster raster = image.getRaster();
	if (raster == null) return -1;
	final DataBuffer buffer = raster.getDataBuffer();
	if (buffer == null) return -1;

	if (buffer instanceof SignedByteBuffer) {
		return FormatTools.INT8;
	}
	else if (buffer instanceof SignedShortBuffer) {
		return FormatTools.INT16;
	}
	else if (buffer instanceof UnsignedIntBuffer) {
		return FormatTools.UINT32;
	}

	final int type = buffer.getDataType();
	final int imageType = image.getType();
	switch (type) {
		case DataBuffer.TYPE_BYTE:
			return FormatTools.UINT8;
		case DataBuffer.TYPE_DOUBLE:
			return FormatTools.DOUBLE;
		case DataBuffer.TYPE_FLOAT:
			return FormatTools.FLOAT;
		case DataBuffer.TYPE_INT:
			if (imageType == BufferedImage.TYPE_INT_RGB ||
				imageType == BufferedImage.TYPE_INT_BGR ||
				imageType == BufferedImage.TYPE_INT_ARGB)
			{
				return FormatTools.UINT8;
			}
			if (buffer instanceof UnsignedIntBuffer) {
				return FormatTools.UINT32;
			}
			return FormatTools.INT32;
		case DataBuffer.TYPE_SHORT:
			return FormatTools.INT16;
		case DataBuffer.TYPE_USHORT:
			if (imageType == BufferedImage.TYPE_USHORT_555_RGB ||
				imageType == BufferedImage.TYPE_USHORT_565_RGB)
			{
				return FormatTools.UINT8;
			}
			return FormatTools.UINT16;
		default:
			return -1;
	}
}