下面列出了java.awt.image.Raster#getSamples() 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
if (abortRequested()) {
processWriteAborted();
return;
}
processImageProgress((numRowsWritten*100.0F)/dh);
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
if (abortRequested()) {
processWriteAborted();
return;
}
processImageProgress((numRowsWritten*100.0F)/dh);
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
if (abortRequested()) {
processWriteAborted();
return;
}
processImageProgress((numRowsWritten*100.0F)/dh);
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
if (abortRequested()) {
processWriteAborted();
return;
}
processImageProgress((numRowsWritten*100.0F)/dh);
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
if (abortRequested()) {
processWriteAborted();
return;
}
processImageProgress((numRowsWritten*100.0F)/dh);
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
if (abortRequested()) {
processWriteAborted();
return;
}
processImageProgress((numRowsWritten*100.0F)/dh);
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
if (abortRequested()) {
processWriteAborted();
return;
}
processImageProgress((numRowsWritten*100.0F)/dh);
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
processImageProgress((numRowsWritten*100.0F)/dh);
if (abortRequested()) {
processWriteAborted();
return;
}
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
processImageProgress((numRowsWritten*100.0F)/dh);
if (abortRequested()) {
processWriteAborted();
return;
}
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
if (abortRequested()) {
processWriteAborted();
return;
}
processImageProgress((numRowsWritten*100.0F)/dh);
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
if (abortRequested()) {
processWriteAborted();
return;
}
processImageProgress((numRowsWritten*100.0F)/dh);
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
if (abortRequested()) {
processWriteAborted();
return;
}
processImageProgress((numRowsWritten*100.0F)/dh);
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
if (abortRequested()) {
processWriteAborted();
return;
}
processImageProgress((numRowsWritten*100.0F)/dh);
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
if (abortRequested()) {
processWriteAborted();
return;
}
processImageProgress((numRowsWritten*100.0F)/dh);
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
if (abortRequested()) {
processWriteAborted();
return;
}
processImageProgress((numRowsWritten*100.0F)/dh);
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
private void writeRows(RenderedImage image, LZWCompressor compressor,
int sx, int sdx, int sy, int sdy, int sw,
int dy, int ddy, int dw, int dh,
int numRowsWritten, int progressReportRowPeriod)
throws IOException {
if (DEBUG) System.out.println("Writing unoptimized");
int[] sbuf = new int[sw];
byte[] dbuf = new byte[dw];
Raster raster =
image.getNumXTiles() == 1 && image.getNumYTiles() == 1 ?
image.getTile(0, 0) : image.getData();
for (int y = dy; y < dh; y += ddy) {
if (numRowsWritten % progressReportRowPeriod == 0) {
if (abortRequested()) {
processWriteAborted();
return;
}
processImageProgress((numRowsWritten*100.0F)/dh);
}
raster.getSamples(sx, sy, sw, 1, 0, sbuf);
for (int i = 0, j = 0; i < dw; i++, j += sdx) {
dbuf[i] = (byte)sbuf[j];
}
compressor.compress(dbuf, 0, dw);
numRowsWritten++;
sy += sdy;
}
}
public static void main(String[] args) {
try {
Product product = ProductIO.readProduct("C:/Projects/BEAM/data/MER_RR__1P_A.N1");
int width = product.getSceneRasterWidth();
int height = product.getSceneRasterHeight();
// the expression to be evaluated
String expression = "not l2_flags.INVALID and not l1_flags.BRIGHT";
// allocate boolean mask values for a single scan line
int[] maskLine = new int[width];
for (int y = 0; y < height; y++) {
// read mask for each scan line
MultiLevelImage multiLevelMaskImage = product.getMaskImage(expression, null);
RenderedImage maskImage = multiLevelMaskImage.getImage(0); // get the full resolution
Raster data = maskImage.getData(new Rectangle(0, 0, width, 1));
int firstChannelIndex = 0;
data.getSamples(0, 0, width, 1, firstChannelIndex, maskLine);
// process mask values contained in maskLine here
// maskValue == 255 -> true
// maskValue == 0 -> false
// ...
}
product.dispose();
} catch (IOException e) {
// handle error here...
e.printStackTrace();
}
}
private static String checkTransparentNodata(BufferedImage buffImage,
Node node) throws Exception {
String transparentNodata = "NA";
boolean noData = false;
boolean transparent = true;
int[] bandIndexes = new int[4];
bandIndexes[0] = 3; // A
bandIndexes[1] = 2; // B
bandIndexes[2] = 1; // G
bandIndexes[3] = 0; // R
Raster raster = buffImage.getRaster();
int minx = raster.getMinX();
int maxx = minx + raster.getWidth();
int miny = raster.getMinY();
int maxy = miny + raster.getHeight();
int[][] bands = new int[bandIndexes.length][raster.getWidth()];
for (int y = miny; y < maxy; y++) {
for (int i = 0; i < bandIndexes.length; i++) {
raster.getSamples(minx, y, maxx, 1, bandIndexes[i], bands[i]);
}
for (int x = minx; x < maxx; x++) {
int a = bands[0][x];
int b = bands[1][x];
int g = bands[2][x];
int r = bands[3][x];
if (b == 0 && g == 0 && r == 0) {
noData = true;
if (a != 0) {
transparent = false;
}
}
}
}
transparentNodata = (noData) ? (transparent) ? "true" : "false" : "NA";
return transparentNodata;
}