Image Process -- emboss, threshold/BlackWhite [Android]

http://blog.javia.org/

 

 

// GL10 gl;
// int width, height;

int size = width * height;
ByteBuffer buf = ByteBuffer.allocateDirect(size * 4);
buf.order(ByteOrder.nativeOrder());
gl.glReadPixels(0, 0, width, height, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, buf);
int data[] = new int[size];
buf.asIntBuffer().get(data);
buf = null;
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
bitmap.setPixels(data, size-width, -width, 0, 0, width, height);
data = null;

short sdata[] = new short[size];
ShortBuffer sbuf = ShortBuffer.wrap(sdata);
bitmap.copyPixelsToBuffer

(sbuf);
for (int i = 0; i < size; ++i) {
    //BGR-565 to RGB-565
    short v = sdata[i];
    sdata[i] = (short) (((v&0x1f) << 11) | (v&0x7e0) | ((v&0xf800) >> 11));
}
sbuf.rewind();
bitmap.copyPixelsFromBuffer

(sbuf);

try {
    FileOutputStream fos = new FileOutputStream("/sdcard/screeshot.png");
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
    fos.flush();
    fos.close();
} catch (Exception e) {
    // handle
}

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Image Process -- emboss, threshold/BlackWhite [Android])