git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8323 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
78 lines
2.4 KiB
Java
78 lines
2.4 KiB
Java
package com.jme3.util;
|
|
|
|
import java.awt.image.BufferedImage;
|
|
import java.awt.image.DataBufferByte;
|
|
import java.awt.image.DataBufferInt;
|
|
import java.awt.image.WritableRaster;
|
|
import java.nio.ByteBuffer;
|
|
|
|
public final class Screenshots {
|
|
|
|
public static void convertScreenShot2(ByteBuffer bgraBuf, BufferedImage out){
|
|
WritableRaster wr = out.getRaster();
|
|
DataBufferInt db = (DataBufferInt) wr.getDataBuffer();
|
|
|
|
int[] cpuArray = db.getData();
|
|
|
|
bgraBuf.clear();
|
|
bgraBuf.asIntBuffer().get(cpuArray);
|
|
|
|
// int width = wr.getWidth();
|
|
// int height = wr.getHeight();
|
|
//
|
|
// // flip the components the way AWT likes them
|
|
// for (int y = 0; y < height / 2; y++){
|
|
// for (int x = 0; x < width; x++){
|
|
// int inPtr = (y * width + x);
|
|
// int outPtr = ((height-y-1) * width + x);
|
|
// int pixel = cpuArray[inPtr];
|
|
// cpuArray[inPtr] = cpuArray[outPtr];
|
|
// cpuArray[outPtr] = pixel;
|
|
// }
|
|
// }
|
|
}
|
|
|
|
public static void convertScreenShot(ByteBuffer bgraBuf, BufferedImage out){
|
|
WritableRaster wr = out.getRaster();
|
|
DataBufferByte db = (DataBufferByte) wr.getDataBuffer();
|
|
|
|
byte[] cpuArray = db.getData();
|
|
|
|
// copy native memory to java memory
|
|
bgraBuf.clear();
|
|
bgraBuf.get(cpuArray);
|
|
bgraBuf.clear();
|
|
|
|
int width = wr.getWidth();
|
|
int height = wr.getHeight();
|
|
|
|
// flip the components the way AWT likes them
|
|
for (int y = 0; y < height / 2; y++){
|
|
for (int x = 0; x < width; x++){
|
|
int inPtr = (y * width + x) * 4;
|
|
int outPtr = ((height-y-1) * width + x) * 4;
|
|
|
|
byte b1 = cpuArray[inPtr+0];
|
|
byte g1 = cpuArray[inPtr+1];
|
|
byte r1 = cpuArray[inPtr+2];
|
|
byte a1 = cpuArray[inPtr+3];
|
|
|
|
byte b2 = cpuArray[outPtr+0];
|
|
byte g2 = cpuArray[outPtr+1];
|
|
byte r2 = cpuArray[outPtr+2];
|
|
byte a2 = cpuArray[outPtr+3];
|
|
|
|
cpuArray[outPtr+0] = a1;
|
|
cpuArray[outPtr+1] = b1;
|
|
cpuArray[outPtr+2] = g1;
|
|
cpuArray[outPtr+3] = r1;
|
|
|
|
cpuArray[inPtr+0] = a2;
|
|
cpuArray[inPtr+1] = b2;
|
|
cpuArray[inPtr+2] = g2;
|
|
cpuArray[inPtr+3] = r2;
|
|
}
|
|
}
|
|
}
|
|
}
|