From a5679ce214289c900103411c2f652350b461e19c Mon Sep 17 00:00:00 2001 From: Emux <devemux86@gmail.com> Date: Mon, 18 Jul 2016 10:54:23 +0300 Subject: [PATCH] Bitmap.getPngEncodedData improvements, PR #71 --- .../oscim/android/canvas/AndroidBitmap.java | 23 +++++++++++++------ .../oscim/android/canvas/AndroidBitmap.java | 23 +++++++++++++------ vtm-desktop/src/org/oscim/awt/AwtBitmap.java | 18 +++++++++++---- .../src/org/oscim/ios/backend/IosBitmap.java | 15 ++++++------ .../src/org/oscim/gdx/client/GwtBitmap.java | 6 +++++ .../org/oscim/gdx/client/GwtGdxGraphics.java | 1 + vtm/src/org/oscim/backend/canvas/Bitmap.java | 1 + 7 files changed, 61 insertions(+), 26 deletions(-) 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 8ee6779c..6b7b9b48 100644 --- a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidBitmap.java +++ b/vtm-android-gdx/src/org/oscim/android/canvas/AndroidBitmap.java @@ -1,5 +1,7 @@ /* * Copyright 2013 Hannes Janetzek + * Copyright 2016 Longri + * Copyright 2016 devemux86 * * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * @@ -21,6 +23,8 @@ import android.graphics.BitmapFactory; import android.opengl.GLES20; import android.opengl.GLUtils; +import org.oscim.utils.IOUtils; + import java.io.ByteArrayOutputStream; import java.io.InputStream; @@ -44,13 +48,6 @@ 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 */ @@ -108,4 +105,16 @@ public class AndroidBitmap implements org.oscim.backend.canvas.Bitmap { mBitmap.recycle(); } + + @Override + public byte[] getPngEncodedData() { + ByteArrayOutputStream outputStream = null; + try { + outputStream = new ByteArrayOutputStream(); + mBitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream); + return outputStream.toByteArray(); + } finally { + IOUtils.closeQuietly(outputStream); + } + } } diff --git a/vtm-android/src/org/oscim/android/canvas/AndroidBitmap.java b/vtm-android/src/org/oscim/android/canvas/AndroidBitmap.java index 84325949..6b7b9b48 100644 --- a/vtm-android/src/org/oscim/android/canvas/AndroidBitmap.java +++ b/vtm-android/src/org/oscim/android/canvas/AndroidBitmap.java @@ -1,5 +1,7 @@ /* * Copyright 2013 Hannes Janetzek + * Copyright 2016 Longri + * Copyright 2016 devemux86 * * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * @@ -21,6 +23,8 @@ import android.graphics.BitmapFactory; import android.opengl.GLES20; import android.opengl.GLUtils; +import org.oscim.utils.IOUtils; + import java.io.ByteArrayOutputStream; import java.io.InputStream; @@ -44,13 +48,6 @@ 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 */ @@ -108,4 +105,16 @@ public class AndroidBitmap implements org.oscim.backend.canvas.Bitmap { mBitmap.recycle(); } + + @Override + public byte[] getPngEncodedData() { + ByteArrayOutputStream outputStream = null; + try { + outputStream = new ByteArrayOutputStream(); + mBitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream); + return outputStream.toByteArray(); + } finally { + IOUtils.closeQuietly(outputStream); + } + } } diff --git a/vtm-desktop/src/org/oscim/awt/AwtBitmap.java b/vtm-desktop/src/org/oscim/awt/AwtBitmap.java index b882c34a..f95ebf33 100644 --- a/vtm-desktop/src/org/oscim/awt/AwtBitmap.java +++ b/vtm-desktop/src/org/oscim/awt/AwtBitmap.java @@ -1,6 +1,7 @@ /* * Copyright 2013 Hannes Janetzek * Copyright 2016 devemux86 + * Copyright 2016 Longri * * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * @@ -23,6 +24,9 @@ import com.badlogic.gdx.utils.BufferUtils; import org.oscim.backend.GL; import org.oscim.backend.canvas.Bitmap; import org.oscim.renderer.bucket.TextureBucket; +import org.oscim.utils.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; @@ -34,6 +38,8 @@ import java.nio.IntBuffer; import javax.imageio.ImageIO; public class AwtBitmap implements Bitmap { + private static final Logger log = LoggerFactory.getLogger(AwtBitmap.class); + BufferedImage bitmap; int width; int height; @@ -154,13 +160,17 @@ public class AwtBitmap implements Bitmap { } @Override - public byte[] getPngEncodedData(){ - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + public byte[] getPngEncodedData() { + ByteArrayOutputStream outputStream = null; try { + outputStream = new ByteArrayOutputStream(); ImageIO.write(this.bitmap, "png", outputStream); + return outputStream.toByteArray(); } catch (IOException e) { - e.printStackTrace(); + log.error(e.getMessage(), e); + } finally { + IOUtils.closeQuietly(outputStream); } - return outputStream.toByteArray(); + return null; } } diff --git a/vtm-ios/src/org/oscim/ios/backend/IosBitmap.java b/vtm-ios/src/org/oscim/ios/backend/IosBitmap.java index 98f90bde..065dd9ac 100644 --- a/vtm-ios/src/org/oscim/ios/backend/IosBitmap.java +++ b/vtm-ios/src/org/oscim/ios/backend/IosBitmap.java @@ -189,14 +189,6 @@ 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 * @@ -228,4 +220,11 @@ public class IosBitmap implements Bitmap { Color.r(color)) .getCGColor(); } + + @Override + public byte[] getPngEncodedData() { + UIImage uiImage = new UIImage(cgBitmapContext.toImage()); + NSData data = uiImage.toPNGData(); + return data.getBytes(); + } } diff --git a/vtm-web/src/org/oscim/gdx/client/GwtBitmap.java b/vtm-web/src/org/oscim/gdx/client/GwtBitmap.java index 10a97b8b..7a99b46f 100644 --- a/vtm-web/src/org/oscim/gdx/client/GwtBitmap.java +++ b/vtm-web/src/org/oscim/gdx/client/GwtBitmap.java @@ -1,5 +1,6 @@ /* * Copyright 2013 Hannes Janetzek + * Copyright 2016 devemux86 * * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * @@ -99,4 +100,9 @@ public class GwtBitmap implements Bitmap { return true; } + @Override + public byte[] getPngEncodedData() { + // TODO + return null; + } } diff --git a/vtm-web/src/org/oscim/gdx/client/GwtGdxGraphics.java b/vtm-web/src/org/oscim/gdx/client/GwtGdxGraphics.java index fb91935f..ed741ccb 100644 --- a/vtm-web/src/org/oscim/gdx/client/GwtGdxGraphics.java +++ b/vtm-web/src/org/oscim/gdx/client/GwtGdxGraphics.java @@ -55,6 +55,7 @@ public class GwtGdxGraphics extends CanvasAdapter { @Override public Bitmap decodeSvgBitmapImpl(InputStream in) { + // TODO return null; } diff --git a/vtm/src/org/oscim/backend/canvas/Bitmap.java b/vtm/src/org/oscim/backend/canvas/Bitmap.java index 8ff63235..59435726 100644 --- a/vtm/src/org/oscim/backend/canvas/Bitmap.java +++ b/vtm/src/org/oscim/backend/canvas/Bitmap.java @@ -1,5 +1,6 @@ /* * Copyright 2013 Hannes Janetzek + * Copyright 2016 Longri * * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). *