Эх сурвалжийг харах

ra image 优化缩图后锯齿问题
减小打包后尺寸

Ray Zhang 7 жил өмнө
parent
commit
e252e7b237

+ 1 - 1
ApexDrivers/RAUtilsLibrary/src/main/java/com/usai/redant/rautils/utils/ImageUtil.java

@@ -32,7 +32,7 @@ public class ImageUtil {
         int degree = readPictureDegree(sourceFile.getAbsolutePath());
 
         BitmapFactory.Options opts=new BitmapFactory.Options();//获取缩略图显示到屏幕上
-        opts.inSampleSize=1;
+        opts.inSampleSize=3;
         Bitmap cbitmap=BitmapFactory.decodeFile(sourceFile.getAbsolutePath(),opts);
 
         /**

+ 25 - 0
ApexDrivers/RAUtilsLibrary/src/main/java/com/usai/redant/rautils/utils/RAUtil.java

@@ -8,6 +8,10 @@ import android.content.SharedPreferences;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Matrix;
+import android.graphics.Paint;
 import android.os.Build;
 import android.os.Bundle;
 import android.provider.Settings;
@@ -38,6 +42,27 @@ import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
 
 public class RAUtil {
+    public static void LibTest2() {
+        dbgUtil.Logd("RAUtilsLibrary", "LibTest1 aar update successful");
+    }
+    public static Bitmap scale_bmp(Bitmap bitmap, int newWidth, int newHeight) {
+        Bitmap scaledBitmap = Bitmap.createBitmap(newWidth, newHeight, Bitmap.Config.ARGB_8888);
+
+        float ratioX = newWidth / (float) bitmap.getWidth();
+        float ratioY = newHeight / (float) bitmap.getHeight();
+        float middleX = newWidth / 2.0f;
+        float middleY = newHeight / 2.0f;
+
+        Matrix scaleMatrix = new Matrix();
+        scaleMatrix.setScale(ratioX, ratioY, middleX, middleY);
+
+        Canvas canvas = new Canvas(scaledBitmap);
+        canvas.setMatrix(scaleMatrix);
+        canvas.drawBitmap(bitmap, middleX - bitmap.getWidth() / 2, middleY - bitmap.getHeight() / 2, new Paint(Paint.FILTER_BITMAP_FLAG));
+
+        return scaledBitmap;
+
+    }
     public static void LibTest1() {
         dbgUtil.Logd("RAUtilsLibrary", "LibTest1 aar update successful");
     }

+ 9 - 0
ApexDrivers/raimage/build.gradle

@@ -1,6 +1,15 @@
 apply plugin: 'com.android.application'
 
 android {
+
+    splits {
+        abi {
+            enable true
+            reset()
+            include 'armeabi-v7a'
+            universalApk true
+        }
+    }
     compileSdkVersion 26
     defaultConfig {
         applicationId "com.usai.redant.raimage"

+ 3 - 3
ApexDrivers/raimage/src/main/java/com/usai/redant/raimage/FullScreenLoginActivity.java

@@ -31,7 +31,7 @@ import android.widget.Toast;
 
 import com.usai.util.AES;
 import com.usai.util.Network;
-import com.usai.util.RAUtil;
+import com.usai.util.utils;
 import com.usai.util.dbgUtil;
 
 import org.json.JSONObject;
@@ -588,7 +588,7 @@ public class FullScreenLoginActivity extends Activity {
 //        }
 
 
-        return RAUtil.checkPermissions(this,permissions);
+        return utils.checkPermissions(this,permissions);
 
 //        return ret;
     }
@@ -599,7 +599,7 @@ public class FullScreenLoginActivity extends Activity {
     public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
     {
 
-        if (requestCode == RAUtil.MY_PERMISSIONS_REQUEST)
+        if (requestCode == utils.MY_PERMISSIONS_REQUEST)
         {
             boolean missing=false;
             boolean request = false;

+ 27 - 10
ApexDrivers/raimage/src/main/java/com/usai/redant/raimage/MainActivity.java

@@ -42,12 +42,13 @@ import com.usai.redant.raimage.Model.ManufactureListActivity;
 import com.usai.redant.raimage.PhotoList.PhotoGridActivity;
 import com.usai.redant.rautils.receiver.RABroadcast;
 import com.usai.redant.rautils.signature.SignatureActivity;
+import com.usai.redant.rautils.utils.RAUtil;
 import com.usai.redant.rautils.zxing.codescanner.CaptureActivity;
 import com.usai.util.AES;
 import com.usai.util.MD5;
 import com.usai.util.Network;
-import com.usai.util.RAUtil;
 import com.usai.util.dbgUtil;
+import com.usai.util.utils;
 
 import org.json.JSONArray;
 import org.json.JSONException;
@@ -382,7 +383,7 @@ public class MainActivity extends AppCompatActivity
                     Bundle task = new Bundle();
 
                     task.putString("path",path);
-                    task.putString("file",RAUtil.lastPathComponent(path));
+                    task.putString("file",utils.lastPathComponent(path));
                     task.putString("url",RedAntApplication.active_address + Network.URL_UPLOAD);
 
                     String md5 = MD5.md5sum(path);
@@ -420,7 +421,7 @@ public class MainActivity extends AppCompatActivity
                         Bundle task = new Bundle();
 
                         task.putString("path",signature);
-                        task.putString("file",RAUtil.lastPathComponent(signature));
+                        task.putString("file",utils.lastPathComponent(signature));
                         task.putString("url",RedAntApplication.active_address + Network.URL_UPLOAD);
 
                         String md5 = MD5.md5sum(signature);
@@ -553,7 +554,7 @@ public class MainActivity extends AppCompatActivity
                                             Bundle task = new Bundle();
 
                                             task.putString("path",path);
-                                            task.putString("file",RAUtil.lastPathComponent(path));
+                                            task.putString("file",utils.lastPathComponent(path));
                                             task.putString("url",RedAntApplication.active_address + Network.URL_UPLOAD);
 
                                             String md5 = MD5.md5sum(path);
@@ -1206,7 +1207,7 @@ public class MainActivity extends AppCompatActivity
         String imageFileName = barcode_title + timeStamp +".jpg";
 
 
-        File routedFile = RAUtil.routeBitmap(imgFile,imageFileName);
+        File routedFile = utils.routeBitmap(imgFile,imageFileName);
 
         SharedPreferences preferences = RedAntApplication.getInstance().getSharedPreferences("UploadManager", 0);
         boolean auto_compress = preferences.getBoolean("compress",true);
@@ -1249,9 +1250,25 @@ public class MainActivity extends AppCompatActivity
 
                 }
             }
-            Bitmap scaled = Bitmap.createScaledBitmap(source, width, height, true);
+//            Bitmap scaled = Bitmap.createScaledBitmap(source, width, height, true);
 
 
+            Bitmap scaled =RAUtil.scale_bmp(source,width,height);
+//debug
+
+//            if(true) {
+//                Matrix m = new Matrix();
+//
+//                final int swidth = source.getWidth();
+//                final int sheight = source.getHeight();
+//                if (swidth != width || sheight != height) {
+//                    final float sx = width / (float) swidth;
+//                    final float sy = height / (float) sheight;
+//                    m.setScale(sx, sy);
+//                }
+//                boolean transformed = !m.rectStaysRect();
+//                Log.d(TAG, "transformed: "+transformed);
+//            }
 
             String scalePath = path.replace(".jpg", "_scaled.jpg");
             File scaleFile = new File(scalePath);
@@ -1265,7 +1282,7 @@ public class MainActivity extends AppCompatActivity
 
                 String rotedpath = routedFile.getAbsolutePath();
                 routedFile.delete();
-                RAUtil.updateGallery(rotedpath);
+                utils.updateGallery(rotedpath);
 //				scaleFile.renameTo(new File(path));
                 return scaleFile;
 
@@ -1548,7 +1565,7 @@ public class MainActivity extends AppCompatActivity
 
 
 //                Log.d(TAG, "File:" + image.getAbsolutePath());
-                RAUtil.updateGallery(photoFile.toString());
+                utils.updateGallery(photoFile.toString());
                 StartCamera();
                 // iPhotoCount++;
 //				super.onActivityResult(requestCode, resultCode, data);
@@ -1575,7 +1592,7 @@ public class MainActivity extends AppCompatActivity
 
                 String photopath=photoFile.getAbsolutePath();
                 photoFile.delete();
-                RAUtil.updateGallery(photopath);
+                utils.updateGallery(photopath);
                 TextView countTextView = (TextView) findViewById(R.id.tvPhotoCount);
                 if (newVersion) {
                     countTextView = this.countTextView;
@@ -1638,7 +1655,7 @@ public class MainActivity extends AppCompatActivity
 
                     if (mode.equals("POP")||mode.equals("Returns"))
                     {
-                        if(!RAUtil.isNumeric(pid))
+                        if(!utils.isNumeric(pid))
                         {
 
                             new AlertDialog.Builder(MainActivity.this)

+ 2 - 2
ApexDrivers/raimage/src/main/java/com/usai/redant/raimage/PhotoList/PhotoGridActivity.java

@@ -21,7 +21,7 @@ import android.widget.ImageButton;
 import android.widget.ImageView;
 
 import com.usai.redant.raimage.R;
-import com.usai.util.RAUtil;
+import com.usai.util.utils;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
@@ -81,7 +81,7 @@ public class PhotoGridActivity extends AppCompatActivity implements RAGridView.G
                     if (delete == 1) {
                         // 删除文件
                         new File(item.get("path")).delete();
-                        RAUtil.updateGallery(item.get("path"));
+                        utils.updateGallery(item.get("path"));
                         iterator.remove();
                         int index = photoDic.indexOf(item);
                     }

+ 2 - 2
ApexDrivers/raimage/src/main/java/com/usai/redant/raimage/PhotoList/PhotoListActivity.java

@@ -19,7 +19,7 @@ import android.widget.ImageView;
 import android.widget.Toast;
 
 import com.usai.redant.raimage.R;
-import com.usai.util.RAUtil;
+import com.usai.util.utils;
 
 import java.io.File;
 import java.io.Serializable;
@@ -77,7 +77,7 @@ public class PhotoListActivity extends AppCompatActivity {
                     if (delete == 1) {
                         // 删除文件
                         new File(item.get("path")).delete();
-                        RAUtil.updateGallery(item.get("path"));
+                        utils.updateGallery(item.get("path"));
                         iterator.remove();
                         int index = photoDic.indexOf(item);
                     }

+ 2 - 2
ApexDrivers/raimage/src/main/java/com/usai/redant/raimage/PhotoPreviewActivity.java

@@ -23,7 +23,7 @@ import android.widget.LinearLayout;
 import android.widget.ViewSwitcher;
 import android.widget.Gallery.LayoutParams;
 
-import com.usai.util.RAUtil;
+import com.usai.util.utils;
 
 public class PhotoPreviewActivity extends Activity implements
 		ViewSwitcher.ViewFactory
@@ -145,7 +145,7 @@ public class PhotoPreviewActivity extends Activity implements
 				mSwitcher.setImageURI(null);
 				Integer idx = (Integer) current_view.getTag();
 				new File(pic_file.get(idx)).delete();
-				RAUtil.updateGallery(pic_file.get(idx));
+				utils.updateGallery(pic_file.get(idx));
 				current_view = null;
 				// // pic_file.remove(idx);
 			}

+ 46 - 0
ApexDrivers/raimage/src/main/java/com/usai/util/utils.java

@@ -0,0 +1,46 @@
+package com.usai.util;
+
+import android.app.Activity;
+import android.content.Context;
+
+import com.usai.redant.raimage.RedAntApplication;
+import com.usai.redant.rautils.utils.ImageUtil;
+
+import java.io.File;
+
+
+/**
+ * Created by ray on 27/06/2017.
+ */
+
+
+public class utils {
+
+    public static final int MY_PERMISSIONS_REQUEST = 1;
+
+    public static boolean isNumeric(String str){
+        return com.usai.redant.rautils.utils.RAUtil.isNumeric(str);
+    }
+
+    public static Boolean checkPermissions(Activity activity, String[] permissions)
+    {
+        return com.usai.redant.rautils.utils.RAUtil.checkPermissions(activity, permissions);
+    }
+
+    public static void updateGallery(String filename)//filename是我们的文件全名,包括后缀哦
+    {
+        Context context = RedAntApplication.getInstance().getApplicationContext();
+        com.usai.redant.rautils.utils.ImageUtil.updateGallery(context, filename);
+    }
+
+    public static String lastPathComponent(String path){
+        return com.usai.redant.rautils.utils.FileManager.lastPathComponent(path);
+    }
+
+    public static File routeBitmap(File sourceFile,String file_name) {
+
+        Context context = RedAntApplication.getInstance().getApplicationContext();
+        return ImageUtil.routeBitmap(context, sourceFile, file_name);
+
+    }
+}