本文整理汇总了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();
}
示例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);
}
}