From 44b40608f6bbfb27193c2e58b1a6d7cb276c12aa Mon Sep 17 00:00:00 2001 From: Longri Date: Sun, 17 Jul 2016 21:21:58 +0200 Subject: [PATCH] Bitmap: get png encoded data implementation --- .../src/org/oscim/android/canvas/AndroidBitmap.java | 8 ++++++++ .../src/org/oscim/android/canvas/AndroidBitmap.java | 8 ++++++++ vtm-desktop/src/org/oscim/awt/AwtBitmap.java | 12 ++++++++++++ vtm-ios/src/org/oscim/ios/backend/IosBitmap.java | 7 +++++++ vtm/src/org/oscim/backend/canvas/Bitmap.java | 2 ++ 5 files changed, 37 insertions(+) diff --git a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidBitmap.java b/vtm-android-gdx/src/org/oscim/android/canvas/AndroidBitmap.java index 0655deb9..8ee6779c 100644 --- a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidBitmap.java +++ b/vtm-android-gdx/src/org/oscim/android/canvas/AndroidBitmap.java @@ -21,6 +21,7 @@ import android.graphics.BitmapFactory; import android.opengl.GLES20; import android.opengl.GLUtils; +import java.io.ByteArrayOutputStream; import java.io.InputStream; import static android.graphics.Bitmap.Config.ARGB_8888; @@ -43,6 +44,13 @@ public class AndroidBitmap implements org.oscim.backend.canvas.Bitmap { return mBitmap != null; } + @Override + public byte[] getPngEncodedData() { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + this.mBitmap.compress(Bitmap.CompressFormat.PNG, 0, outputStream); + return outputStream.toByteArray(); + } + /** * @param format ignored always ARGB8888 */ diff --git a/vtm-android/src/org/oscim/android/canvas/AndroidBitmap.java b/vtm-android/src/org/oscim/android/canvas/AndroidBitmap.java index 0655deb9..84325949 100644 --- a/vtm-android/src/org/oscim/android/canvas/AndroidBitmap.java +++ b/vtm-android/src/org/oscim/android/canvas/AndroidBitmap.java @@ -21,6 +21,7 @@ import android.graphics.BitmapFactory; import android.opengl.GLES20; import android.opengl.GLUtils; +import java.io.ByteArrayOutputStream; import java.io.InputStream; import static android.graphics.Bitmap.Config.ARGB_8888; @@ -43,6 +44,13 @@ public class AndroidBitmap implements org.oscim.backend.canvas.Bitmap { return mBitmap != null; } + @Override + public byte[] getPngEncodedData(){ + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + this.mBitmap.compress(Bitmap.CompressFormat.PNG, 0, outputStream); + return outputStream.toByteArray(); + } + /** * @param format ignored always ARGB8888 */ diff --git a/vtm-desktop/src/org/oscim/awt/AwtBitmap.java b/vtm-desktop/src/org/oscim/awt/AwtBitmap.java index d442fc77..b882c34a 100644 --- a/vtm-desktop/src/org/oscim/awt/AwtBitmap.java +++ b/vtm-desktop/src/org/oscim/awt/AwtBitmap.java @@ -25,6 +25,7 @@ import org.oscim.backend.canvas.Bitmap; import org.oscim.renderer.bucket.TextureBucket; import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -151,4 +152,15 @@ public class AwtBitmap implements Bitmap { public boolean isValid() { return true; } + + @Override + public byte[] getPngEncodedData(){ + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + try { + ImageIO.write(this.bitmap, "png", outputStream); + } catch (IOException e) { + e.printStackTrace(); + } + return outputStream.toByteArray(); + } } diff --git a/vtm-ios/src/org/oscim/ios/backend/IosBitmap.java b/vtm-ios/src/org/oscim/ios/backend/IosBitmap.java index 7a94b3d0..98f90bde 100644 --- a/vtm-ios/src/org/oscim/ios/backend/IosBitmap.java +++ b/vtm-ios/src/org/oscim/ios/backend/IosBitmap.java @@ -189,6 +189,13 @@ public class IosBitmap implements Bitmap { return this.cgBitmapContext != null; } + @Override + public byte[] getPngEncodedData() { + UIImage uiImage = new UIImage(cgBitmapContext.toImage()); + NSData data = uiImage.toPNGData(); + return data.getBytes(); + } + /** * Returns a ByteArray from InputStream diff --git a/vtm/src/org/oscim/backend/canvas/Bitmap.java b/vtm/src/org/oscim/backend/canvas/Bitmap.java index 8f9d9139..8ff63235 100644 --- a/vtm/src/org/oscim/backend/canvas/Bitmap.java +++ b/vtm/src/org/oscim/backend/canvas/Bitmap.java @@ -62,4 +62,6 @@ public interface Bitmap { void uploadToTexture(boolean replace); boolean isValid(); + + byte[] getPngEncodedData(); }