You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.6 KiB
53 lines
1.6 KiB
14 years ago
|
package com.jme3.util;
|
||
|
|
||
14 years ago
|
import com.jme3.util.*;
|
||
14 years ago
|
import java.awt.image.BufferedImage;
|
||
|
import java.awt.image.DataBufferByte;
|
||
|
import java.awt.image.WritableRaster;
|
||
|
import java.nio.ByteBuffer;
|
||
|
|
||
|
public final class Screenshots {
|
||
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|