From 0761e33693a92e28061069588c94da981929c973 Mon Sep 17 00:00:00 2001 From: mcxiaoke Date: Wed, 9 Mar 2016 16:41:11 +0800 Subject: [PATCH] support upload large photo and raw gif --- .../mcxiaoke/minicat/service/SyncService.java | 23 ++++++++++++++----- .../mcxiaoke/minicat/util/ImageHelper.java | 14 +++++------ 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/mcxiaoke/minicat/service/SyncService.java b/app/src/main/java/com/mcxiaoke/minicat/service/SyncService.java index 7dd2366a..651b9f9a 100644 --- a/app/src/main/java/com/mcxiaoke/minicat/service/SyncService.java +++ b/app/src/main/java/com/mcxiaoke/minicat/service/SyncService.java @@ -39,6 +39,7 @@ import com.mcxiaoke.minicat.dao.model.UserColumns; import com.mcxiaoke.minicat.dao.model.UserModel; import com.mcxiaoke.minicat.util.Assert; +import com.mcxiaoke.minicat.util.IOHelper; import com.mcxiaoke.minicat.util.ImageHelper; import com.mcxiaoke.minicat.util.LogUtil; import com.mcxiaoke.minicat.util.NetworkHelper; @@ -799,6 +800,7 @@ private boolean doStatusUpdate(final StatusUpdateInfo info, boolean needDeleteDr debug("doStatusUpdate() info=" + info); boolean photoUpload = false; + File photo = null; try { StatusModel result = null; if (StringHelper.isEmpty(info.fileName) || new File(info.fileName).length() == 0) { @@ -809,14 +811,21 @@ private boolean doStatusUpdate(final StatusUpdateInfo info, boolean needDeleteDr } } else { File file = new File(info.fileName); - int quality = NetworkHelper.isWifi(this) ? ImageHelper.IMAGE_QUALITY_HIGH : ImageHelper.IMAGE_QUALITY_MEDIUM; - - File photo = ImageHelper.prepareUploadFile(this, file, - quality); + boolean isWifi = NetworkHelper.isWifi(this); + int quality = isWifi ? ImageHelper.IMAGE_QUALITY_HIGH : + ImageHelper.IMAGE_QUALITY_MEDIUM; + int maxWidth = isWifi ? ImageHelper.IMAGE_MAX_WIDTH : ImageHelper.IMAGE_MAX_WIDTH_2; + if (file.getName().toLowerCase().endsWith(".gif")) { + photo = new File(IOHelper.getImageCacheDir(this), + System.currentTimeMillis() + "_fanfouupload.gif"); + IOHelper.copyFile(file, photo); + } else { + photo = ImageHelper.prepareUploadFile(this, file, quality, maxWidth); + } if (photo != null && photo.length() > 0) { if (DEBUG) { debug("doStatusUpdate() photo file=" + file.getName() + " size=" - + photo.length() / 1024 + " quality=" + quality); + + photo.length() / 1024 + "k quality=" + quality); } photoUpload = true; result = mApi.uploadPhoto(photo, info.text, info.location); @@ -857,7 +866,9 @@ private boolean doStatusUpdate(final StatusUpdateInfo info, boolean needDeleteDr getString(R.string.msg_unkonow_error)); UmengHelper.onStatusUpdateError(this, AppContext.getAccount(), 0, e.getMessage(), e.getCause() + ""); } finally { -// mNotificationManager.cancel(NOTIFICATION_STATUS_UPDATE_ONGOING); + if (photo != null) { + photo.delete(); + } } isSending = false; return res; diff --git a/app/src/main/java/com/mcxiaoke/minicat/util/ImageHelper.java b/app/src/main/java/com/mcxiaoke/minicat/util/ImageHelper.java index 27597fcf..f06b8632 100644 --- a/app/src/main/java/com/mcxiaoke/minicat/util/ImageHelper.java +++ b/app/src/main/java/com/mcxiaoke/minicat/util/ImageHelper.java @@ -44,11 +44,11 @@ * @version 3.2 2011.12.26 */ final public class ImageHelper { - public static final int IMAGE_QUALITY_HIGH = 90; - public static final int IMAGE_QUALITY_MEDIUM = 80; + public static final int IMAGE_QUALITY_HIGH = 95; + public static final int IMAGE_QUALITY_MEDIUM = 85; public static final int IMAGE_QUALITY_LOW = 70; - public static final int IMAGE_MAX_WIDTH = 596;// 640 596 - // public static final int IMAGE_MAX_HEIGHT = 1200;// 1320 1192 + public static final int IMAGE_MAX_WIDTH = 1600;// 640 596 + public static final int IMAGE_MAX_WIDTH_2 = 1000;// 640 596 public static final int OUTPUT_BUFFER_SIZE = 8196; private static final String TAG = ImageHelper.class.getSimpleName(); @@ -420,11 +420,11 @@ public static boolean writeToFile(File file, Bitmap bitmap) { return false; } - public static File prepareUploadFile(Context context, File file, int quality) { + public static File prepareUploadFile(Context context, File file, int quality, int maxWidth) { File destFile = new File(IOHelper.getImageCacheDir(context), - "fanfouupload.jpg"); + System.currentTimeMillis() + "_fanfouupload.jpg"); return compressForUpload(file.getPath(), destFile.getPath(), - IMAGE_MAX_WIDTH, quality); + maxWidth, quality); } public static File prepareProfileImage(Context context, File file) {