Revision 8781 org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/DefaultBufferManager.java
DefaultBufferManager.java | ||
---|---|---|
441 | 441 |
} |
442 | 442 |
|
443 | 443 |
@Override |
444 |
public Buffer createRGBBuffer(BufferedImage img, IProjection projection, Envelope envelope) throws BufferException { |
|
445 |
|
|
446 |
int imageType = img.getType(); |
|
447 |
if(imageType == BufferedImage.TYPE_3BYTE_BGR) { |
|
448 |
return createBuffer(img, projection, envelope); |
|
449 |
} |
|
450 |
|
|
451 |
int bands = 3; |
|
452 |
int[] bandDataTypes = new int[bands]; |
|
453 |
NoData[] bandNoData = new NoData[bands]; |
|
454 |
for (int i = 0; i < bandDataTypes.length; i++) { |
|
455 |
bandDataTypes[i] = BufferManager.TYPE_BYTE; |
|
456 |
bandNoData[i] = null; |
|
457 |
} |
|
458 |
|
|
459 |
Buffer buffer = null; |
|
460 |
buffer = |
|
461 |
createBuffer(img.getHeight(), img.getWidth(), bandDataTypes, bandNoData, projection, envelope); |
|
462 |
|
|
463 |
for (int r = 0; r < img.getHeight(); r++) { |
|
464 |
for (int c = 0; c < img.getWidth(); c++) { |
|
465 |
int color = img.getRGB(c, r); |
|
466 |
|
|
467 |
Color awtColor = new Color(color, true); |
|
468 |
buffer.getBandByte(0).set(r, c, (byte)awtColor.getRed()); // RED |
|
469 |
buffer.getBandByte(1).set(r, c, (byte)awtColor.getGreen()); // GREEN |
|
470 |
buffer.getBandByte(2).set(r, c, (byte)awtColor.getBlue()); // BLUE |
|
471 |
} |
|
472 |
} |
|
473 |
return buffer; |
|
474 |
} |
|
475 |
|
|
476 |
@Override |
|
444 | 477 |
public String getTypeName(int type) { |
445 | 478 |
DataTypesManager dtManager = ToolsLocator.getDataTypesManager(); |
446 | 479 |
String[] names = { |
Also available in: Unified diff