當前位置: 首頁>>代碼示例>>Java>>正文


Java Raster.getNumBands方法代碼示例

本文整理匯總了Java中java.awt.image.Raster.getNumBands方法的典型用法代碼示例。如果您正苦於以下問題:Java Raster.getNumBands方法的具體用法?Java Raster.getNumBands怎麽用?Java Raster.getNumBands使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在java.awt.image.Raster的用法示例。


在下文中一共展示了Raster.getNumBands方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: writeIDAT

import java.awt.image.Raster; //導入方法依賴的package包/類
private void writeIDAT() throws IOException
{
	IDATOutputStream ios = new IDATOutputStream(dataOutput, 8192);
	DeflaterOutputStream dos = new DeflaterOutputStream(ios,
			new Deflater(9));

	// Future work - don't convert entire image to a Raster It
	// might seem that you could just call image.getData() but
	// 'BufferedImage.subImage' doesn't appear to set the Width
	// and height properly of the Child Raster, so the Raster
	// you get back here appears larger than it should.
	// This solves that problem by bounding the raster to the
	// image's bounds...
	Raster ras = image.getData(new Rectangle(image.getMinX(), image
			.getMinY(), image.getWidth(), image.getHeight()));
	// System.out.println("Image: [" +
	//                    image.getMinY()  + ", " +
	//                    image.getMinX()  + ", " +
	//                    image.getWidth()  + ", " +
	//                    image.getHeight() + "]");
	// System.out.println("Ras: [" +
	//                    ras.getMinX()  + ", " +
	//                    ras.getMinY()  + ", " +
	//                    ras.getWidth()  + ", " +
	//                    ras.getHeight() + "]");

	if (skipAlpha)
	{
		int numBands = ras.getNumBands() - 1;
		int[] bandList = new int[numBands];
		for (int i = 0; i < numBands; i++)
		{
			bandList[i] = i;
		}
		ras = ras.createChild(0, 0, ras.getWidth(), ras.getHeight(), 0, 0,
				bandList);
	}

	if (interlace)
	{
		// Interlacing pass 1
		encodePass(dos, ras, 0, 0, 8, 8);
		// Interlacing pass 2
		encodePass(dos, ras, 4, 0, 8, 8);
		// Interlacing pass 3
		encodePass(dos, ras, 0, 4, 4, 8);
		// Interlacing pass 4
		encodePass(dos, ras, 2, 0, 4, 4);
		// Interlacing pass 5
		encodePass(dos, ras, 0, 2, 2, 4);
		// Interlacing pass 6
		encodePass(dos, ras, 1, 0, 2, 2);
		// Interlacing pass 7
		encodePass(dos, ras, 0, 1, 1, 2);
	}
	else
	{
		encodePass(dos, ras, 0, 0, 1, 1);
	}

	dos.finish();
	ios.flush();
}
 
開發者ID:GDSRS,項目名稱:TrabalhoFinalEDA2,代碼行數:64,代碼來源:mxPngImageEncoder.java

示例2: encode

import java.awt.image.Raster; //導入方法依賴的package包/類
/** Encode an image to JPEG **/
public ByteBuffer encode(Raster img, int quality) throws TurboJpegException {
  Pointer codec = null;
  Pointer bufPtr = null;
  try {
    TJPF pixelFmt;
    switch (img.getNumBands()) {
      case 4:
        pixelFmt = TJPF.TJPF_BGRX; // 4BYTE_BGRA
        break;
      case 3:
        pixelFmt = TJPF.TJPF_BGR;  // 3BYTE_BGR
        break;
      case 1:
        pixelFmt = TJPF.TJPF_GRAY; // 1BYTE_GRAY
        break;
      default:
        throw new IllegalArgumentException("Illegal sample format");
    }
    TJSAMP sampling = pixelFmt == TJPF.TJPF_GRAY ? TJSAMP.TJSAMP_GRAY : TJSAMP.TJSAMP_444;
    codec = lib.tjInitCompress();

    // Allocate JPEG target buffer
    int bufSize = (int) lib.tjBufSize(img.getWidth(), img.getHeight(), sampling);
    bufPtr = lib.tjAlloc(bufSize);
    NativeLongByReference lenPtr = new NativeLongByReference(bufSize);

    // Wrap source image data buffer with ByteBuffer to pass it over the ABI
    ByteBuffer inBuf = ByteBuffer.wrap(((DataBufferByte) img.getDataBuffer()).getData())
        .order(runtime.byteOrder());
    int rv = lib.tjCompress2(
        codec, inBuf, img.getWidth(), 0, img.getHeight(),  pixelFmt,
        new PointerByReference(bufPtr), lenPtr, sampling, quality, 0);
    if (rv != 0) {
      LOG.error("Could not compress image (dimensions: {}x{}, format: {}, sampling: {}, quality: {}",
                img.getWidth(), img.getHeight(), pixelFmt, sampling, quality);
      throw new TurboJpegException(lib.tjGetErrorStr());
    }
    ByteBuffer outBuf = ByteBuffer.allocate(lenPtr.getValue().intValue()).order(runtime.byteOrder());
    bufPtr.get(0, outBuf.array(), 0, lenPtr.getValue().intValue());
    outBuf.rewind();
    return outBuf;
  } finally {
    if (codec != null && codec.address() != 0) lib.tjDestroy(codec);
    if (bufPtr != null && bufPtr.address() != 0) lib.tjFree(bufPtr);
  }
}
 
開發者ID:dbmdz,項目名稱:imageio-jnr,代碼行數:48,代碼來源:TurboJpeg.java


注:本文中的java.awt.image.Raster.getNumBands方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。