Skip to content

Commit 7a072e9

Browse files
committed
image compress(defaults: MIME_JPEG)
1 parent c3f8772 commit 7a072e9

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

src/com/github/nowelium/titanium/module/thumbnail/ThumbnailModule.java

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
*/
99
package com.github.nowelium.titanium.module.thumbnail;
1010

11+
import java.io.ByteArrayOutputStream;
12+
1113
import org.appcelerator.kroll.KrollDict;
1214
import org.appcelerator.kroll.KrollModule;
1315
import org.appcelerator.kroll.annotations.Kroll;
@@ -17,45 +19,70 @@
1719
import org.appcelerator.titanium.util.TiConfig;
1820

1921
import android.graphics.Bitmap;
22+
import android.graphics.Bitmap.CompressFormat;
2023
import android.graphics.BitmapFactory;
2124
import android.graphics.Matrix;
25+
import android.webkit.MimeTypeMap;
2226

2327
@Kroll.module(name="Thumbnail", id="com.github.nowelium.titanium.module.thumbnail")
2428
public class ThumbnailModule extends KrollModule
2529
{
26-
30+
2731
// Standard Debugging variables
2832
private static final String LCAT = "ThumbnailModule";
2933
private static final boolean DBG = TiConfig.LOGD;
3034

3135
// You can define constants with @Kroll.constant, for example:
3236
// @Kroll.constant public static final String EXTERNAL_NAME = value;
3337

38+
@Kroll.constant
39+
public static final String MIME_JPEG = "image/jpeg";
40+
41+
@Kroll.constant
42+
public static final String MIME_PNG = "image/png";
43+
3444
public ThumbnailModule(TiContext tiContext) {
3545
super(tiContext);
3646
}
3747

3848
// Methods
3949
@Kroll.method
4050
public TiBlob resize(TiBlob blob){
41-
return resizeFromBlob(blob, 320, 480, true);
51+
return resizeFromBlob(blob, 320, 480, true, MIME_JPEG);
4252
}
4353

4454
@Kroll.method
4555
public TiBlob resizeTo(TiBlob blob, KrollDict args){
4656
int width = args.optInt("width", 320).intValue();
4757
int height = args.optInt("height", 480).intValue();
4858
boolean keepAspect = args.optBoolean("keepAspect", true);
59+
String mimeType = args.optString("mimeType", MIME_JPEG);
4960

50-
return resizeFromBlob(blob, width, height, keepAspect);
61+
return resizeFromBlob(blob, width, height, keepAspect, mimeType);
5162
}
52-
53-
private TiBlob resizeFromBlob(TiBlob blob, int width, int height, boolean keepAspect){
54-
byte[] binary = blob.getBytes();
63+
64+
private TiBlob compress(Bitmap bitmap, CompressFormat format, String mimeType){
65+
ByteArrayOutputStream out = new ByteArrayOutputStream();
66+
if(bitmap.compress(format, 80, out)){
67+
return TiBlob.blobFromData(context, out.toByteArray(), mimeType);
68+
}
69+
// defaults: PNG(TiBlob.java:76<compress>)
70+
return TiBlob.blobFromImage(context, bitmap);
71+
}
72+
73+
private TiBlob compress(Bitmap bitmap, String mimeType){
74+
if(MIME_PNG.equals(mimeType)){
75+
return compress(bitmap, CompressFormat.PNG, MIME_PNG);
76+
}
77+
return compress(bitmap, CompressFormat.JPEG, MIME_JPEG);
78+
}
79+
80+
private TiBlob resizeFromBlob(TiBlob blob, int width, int height, boolean keepAspect, String mimeType){
81+
final byte[] binary = blob.getBytes();
5582
final Bitmap target = BitmapFactory.decodeByteArray(binary, 0, binary.length);
5683
final Bitmap resized = resizeToSize(target, width, height, keepAspect);
5784
try {
58-
return TiBlob.blobFromImage(context, resized);
85+
return compress(resized, mimeType);
5986
} finally {
6087
target.recycle();
6188
resized.recycle();

0 commit comments

Comments
 (0)