java.awt.image.DataBufferInt#getElem()源码实例Demo

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

源代码1 项目: webp-imageio   文件: WebP.java
private static byte[] extractComponentRGBInt( int aWidth, int aHeight, ComponentSampleModel aSampleModel, DataBufferInt aDataBuffer ) {
  byte[] out = new byte[ aWidth * aHeight * 3 ];

  int[] bankIndices = aSampleModel.getBankIndices();
  int[] bankOffsets = aSampleModel.getBandOffsets();
  int rScanIx = bankOffsets[ 0 ];
  int gScanIx = bankOffsets[ 1 ];
  int bScanIx = bankOffsets[ 2 ];

  int pixelStride = aSampleModel.getPixelStride();
  int scanlineStride = aSampleModel.getScanlineStride();
  for ( int b = 0, y = 0; y < aHeight; y++ ) {
    int rPixIx = rScanIx;
    int gPixIx = gScanIx;
    int bPixIx = bScanIx;
    for ( int x = 0; x < aWidth; x++, b += 3 ) {
      out[b] = (byte) aDataBuffer.getElem(bankIndices[0], rPixIx);
      rPixIx += pixelStride;
      out[b + 1] = (byte) aDataBuffer.getElem(bankIndices[1], gPixIx);
      gPixIx += pixelStride;
      out[b + 2] = (byte) aDataBuffer.getElem(bankIndices[2], bPixIx);
      bPixIx += pixelStride;
    }
    rScanIx += scanlineStride;
    gScanIx += scanlineStride;
    bScanIx += scanlineStride;
  }
  return out;
}
 
源代码2 项目: webp-imageio   文件: WebP.java
private static byte[] extractComponentRGBAInt( int aWidth, int aHeight, ComponentSampleModel aSampleModel, DataBufferInt aDataBuffer ) {
  byte[] out = new byte[ aWidth * aHeight * 4 ];

  int[] bankIndices = aSampleModel.getBankIndices();
  int[] bankOffsets = aSampleModel.getBandOffsets();
  int rScanIx = bankOffsets[ 0 ];
  int gScanIx = bankOffsets[ 1 ];
  int bScanIx = bankOffsets[ 2 ];
  int aScanIx = bankOffsets[ 3 ];

  int pixelStride = aSampleModel.getPixelStride();
  int scanlineStride = aSampleModel.getScanlineStride();
  for ( int b = 0, y = 0; y < aHeight; y++ ) {
    int rPixIx = rScanIx;
    int gPixIx = gScanIx;
    int bPixIx = bScanIx;
    int aPixIx = aScanIx;
    for ( int x = 0; x < aWidth; x++, b += 4 ) {
      out[b] = (byte) aDataBuffer.getElem(bankIndices[0], rPixIx);
      rPixIx += pixelStride;
      out[b + 1] = (byte) aDataBuffer.getElem(bankIndices[1], gPixIx);
      gPixIx += pixelStride;
      out[b + 2] = (byte) aDataBuffer.getElem(bankIndices[2], bPixIx);
      bPixIx += pixelStride;
      out[b + 3] = (byte) aDataBuffer.getElem(bankIndices[3], aPixIx);
      aPixIx += pixelStride;
    }
    rScanIx += scanlineStride;
    gScanIx += scanlineStride;
    bScanIx += scanlineStride;
    aScanIx += scanlineStride;
  }
  return out;
}