Android image editing error

1. Problems

1. Adjusting the sharpness has no effect, and the following error occurs:

write picture description here

Solution:
1. The package of android.support.v8.renderscript should be referenced instead of android android.renderscript, download the android.support.v8.renderscript jar package and put it into the libs folder for reference, you can download it from Sdk\build-tools\xxxx\ Copy renderscript-v8.jar in the renderscript\lib directory, or you can directly use the higher version build tools (the higher build tools already contain v8 jar)
2. Add in app build.gradle,

defaultConfig {
        ......
        renderscriptTargetApi 19
        renderscriptSupportModeEnabled true
        .......
    }

3. Rebuild the project

2. Enter the picture editing, and perform mirror transformation after hand-painting the picture, the mirror interface is abnormal

Modify as follows:

 diff --git a/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/filters/ImageFilterDraw.java b/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/filters/ImageFilterDraw.java
index 6b43d5b..2a84067 100755
--- a/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/filters/ImageFilterDraw.java
+++ b/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/filters/ImageFilterDraw.java
@@ -33,6 +33,7 @@ import android.graphics.PathMeasure;
 import android.graphics.PorterDuff;
 import android.graphics.PorterDuffColorFilter;
 import android.graphics.Rect;
+import android.util.Log;

 import cn.com.protruly.vrbrowser.view.filtershow.filters.FilterDrawRepresentation.StrokeData;
 import cn.com.protruly.vrbrowser.view.filtershow.filters.FilterMirrorRepresentation.Mirror;
@@ -269,15 +270,22 @@ public class ImageFilterDraw extends ImageFilter {
             mCachedStrokes = 0;
         }

-        if (mCachedStrokes < mParameters.getDrawing().size()) {
+        Vector<StrokeData> mDrawing = mParameters.getDrawing();//kang add,22/11/2017
+        //[BEGIN-DEL] draw and Mirror display the abnormality,by kang,22/11/2017
+/*        if (mCachedStrokes < mParameters.getDrawing().size()) {
             fillBuffer(originalRotateToScreen);
-        }
+        }*/
+        //[END]
         canvas.drawBitmap(mOverlayBitmap, 0, 0, paint);

-        StrokeData stroke = mParameters.getCurrentDrawing();
-        if (stroke != null) {
-            paint(stroke, canvas, originalRotateToScreen, quality);
+        //[BEGIN-ADD] draw and Mirror display the abnormality,by kang,22/11/2017
+//        StrokeData stroke = mParameters.getCurrentDrawing();//kang del
+        for(StrokeData stroke:mDrawing) {
+            if (stroke != null) {
+                paint(stroke, canvas, originalRotateToScreen, quality);
+            }
         }
+        //[END]
     }

3. Enter the editing picture operation several times and it will appear

java.lang.OutOfMemoryError: Failed to allocate a 72000012 byte allocation with 4191936 free bytes and 42MB until OOM
修改如下:
$ git st
On branch VREditor4S
Your branch is up-to-date with 'origin/VREditor4S'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   app/src/main/java/cn/com/protruly/vrbrowser/ui/activity/FilterShowActivity.java
        modified:   app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/cache/ImageLoader.java
        modified:   app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/imageshow/MasterImage.java
        modified:   app/src/main/res/layout/filtershow_activity.xml
        modified:   app/src/main/res/values/colors.xml

no changes added to commit (use "git add" and/or "git commit -a")

rd0551@MI-DingKang MINGW64 /e/2_AppProject/VREditor3S (VREditor4S)
$ git diff
diff --git a/app/src/main/java/cn/com/protruly/vrbrowser/ui/activity/FilterShowActivity.java b/app/src/main/java/cn/com/protruly/vrbrowser/ui                                                 /activity/FilterShowActivity.java
index 65da309..998991b 100755
--- a/app/src/main/java/cn/com/protruly/vrbrowser/ui/activity/FilterShowActivity.java
+++ b/app/src/main/java/cn/com/protruly/vrbrowser/ui/activity/FilterShowActivity.java
@@ -894,7 +894,7 @@ public class FilterShowActivity extends ActivityToolbarBase implements OnItemCli
                 Rect bounds = new Rect();
                 Bitmap originalHires = ImageLoader.loadOrientedConstrainedBitmap(master.getUri(),
                         master.getActivity(), highresPreviewSize,
-                        master.getOrientation(), bounds);
+                        master.getOrientation(), bounds, true);
                 master.setOriginalBounds(bounds);
                 master.setOriginalBitmapHighres(originalHires);
                 mBoundService.setOriginalBitmapHighres(originalHires);
diff --git a/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/cache/ImageLoader.java b/app/src/main/java/cn/com/protruly/vrbrowser                                                 /view/filtershow/cache/ImageLoader.java
index 22b1429..025d654 100755
--- a/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/cache/ImageLoader.java
+++ b/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/cache/ImageLoader.java
@@ -520,8 +520,8 @@ public final class ImageLoader {
      * @return downsampled bitmap or null if this operation failed.
      */
     public static Bitmap loadOrientedConstrainedBitmap(Uri uri, Context context, int maxSideLength,
-                                                       int orientation, Rect originalBounds) {
-        Bitmap bmap = loadConstrainedBitmap(uri, context, maxSideLength, originalBounds, true);
+                                                       int orientation, Rect originalBounds, boolean isLarge) {
+        Bitmap bmap = loadConstrainedBitmap(uri, context, maxSideLength, originalBounds, isLarge);//kang
         if (bmap != null) {
             bmap = orientBitmap(bmap, orientation);
             if (bmap.getConfig() != Bitmap.Config.ARGB_8888) {
diff --git a/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/imageshow/MasterImage.java b/app/src/main/java/cn/com/protruly/vrbro                                                 wser/view/filtershow/imageshow/MasterImage.java
index 704a9a7..eea6fb1 100755
--- a/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/imageshow/MasterImage.java
+++ b/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/imageshow/MasterImage.java
@@ -214,7 +214,7 @@ public class MasterImage implements RenderingRequestCaller {
         Rect originalBounds = new Rect();
         mOriginalBitmapLarge = ImageLoader.loadOrientedConstrainedBitmap(uri, getActivity(),
                 Math.min(MAX_BITMAP_DIM, size),
-                mOrientation, originalBounds);
+                mOrientation, originalBounds, false);//kang
         setOriginalBounds(originalBounds);
         if (mOriginalBitmapLarge == null) {
             return false;
diff --git a/app/src/main/res/layout/filtershow_activity.xml b/app/src/main/res/layout/filtershow_activity.xml
index 4eb38f1..4ee1af9 100755
--- a/app/src/main/res/layout/filtershow_activity.xml
+++ b/app/src/main/res/layout/filtershow_activity.xml
@@ -19,7 +19,7 @@
:...skipping...
diff --git a/app/src/main/java/cn/com/protruly/vrbrowser/ui/activity/FilterShowActivity.java b/app/src/main/java/cn/com/protruly/vrbrowser/ui/activity/FilterShowActivity.java
index 65da309..998991b 100755
--- a/app/src/main/java/cn/com/protruly/vrbrowser/ui/activity/FilterShowActivity.java
+++ b/app/src/main/java/cn/com/protruly/vrbrowser/ui/activity/FilterShowActivity.java
@@ -894,7 +894,7 @@ public class FilterShowActivity extends ActivityToolbarBase implements OnItemCli
diff --git a/app/src/main/java/cn/com/protruly/vrbrowser/ui/activity/FilterShowActivity.java b/app/src/main/java/cn/com/protruly/vrbrowser/ui/activity/FilterShowActivity.java
index 65da309..998991b 100755
--- a/app/src/main/java/cn/com/protruly/vrbrowser/ui/activity/FilterShowActivity.java
+++ b/app/src/main/java/cn/com/protruly/vrbrowser/ui/activity/FilterShowActivity.java
@@ -894,7 +894,7 @@ public class FilterShowActivity extends ActivityToolbarBase implements OnItemCli
                 Rect bounds = new Rect();
                 Bitmap originalHires = ImageLoader.loadOrientedConstrainedBitmap(master.getUri(),
                         master.getActivity(), highresPreviewSize,
-                        master.getOrientation(), bounds);
+                        master.getOrientation(), bounds, true);
                 master.setOriginalBounds(bounds);
                 master.setOriginalBitmapHighres(originalHires);
                 mBoundService.setOriginalBitmapHighres(originalHires);
diff --git a/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/cache/ImageLoader.java b/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/cache/ImageLoader.java
index 22b1429..025d654 100755
--- a/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/cache/ImageLoader.java
+++ b/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/cache/ImageLoader.java
@@ -520,8 +520,8 @@ public final class ImageLoader {
      * @return downsampled bitmap or null if this operation failed.
      */
     public static Bitmap loadOrientedConstrainedBitmap(Uri uri, Context context, int maxSideLength,
-                                                       int orientation, Rect originalBounds) {
-        Bitmap bmap = loadConstrainedBitmap(uri, context, maxSideLength, originalBounds, true);
+                                                       int orientation, Rect originalBounds, boolean isLarge) {
+        Bitmap bmap = loadConstrainedBitmap(uri, context, maxSideLength, originalBounds, isLarge);//kang
         if (bmap != null) {
             bmap = orientBitmap(bmap, orientation);
             if (bmap.getConfig() != Bitmap.Config.ARGB_8888) {
diff --git a/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/imageshow/MasterImage.java b/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/imageshow/MasterImage.java
index 704a9a7..eea6fb1 100755
--- a/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/imageshow/MasterImage.java
+++ b/app/src/main/java/cn/com/protruly/vrbrowser/view/filtershow/imageshow/MasterImage.java
@@ -214,7 +214,7 @@ public class MasterImage implements RenderingRequestCaller {
         Rect originalBounds = new Rect();
         mOriginalBitmapLarge = ImageLoader.loadOrientedConstrainedBitmap(uri, getActivity(),
                 Math.min(MAX_BITMAP_DIM, size),
-                mOrientation, originalBounds);
+                mOrientation, originalBounds, false);//kang
         setOriginalBounds(originalBounds);
         if (mOriginalBitmapLarge == null) {
             return false;

2. Remarks

resetGeometryImages
ColorChooser.java
----颜色选择----setup()

ImageDraw.java
onTouchEvent->mFRep.startNewSection( mTmpPoint[0], mTmpPoint[1]);//画线

FilterDrawRepresentation.java
构造函数设置默认值为红色
useParametersFrom负责划线

FilterShowActivity.java
MasterImage.getImage().setPreset(oldPreset, filterRepresentation, true);// copy就是mirror翻转之后的preset

CachingPipeline.java
renderHighres->getOriginalBitmapHighres->getBitmapCopy>applyGeometry->apply  //旋转画图的地方
GeometryMathUtils.java  //裁剪相关操作类
11-17 10:29:15.094 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err: java.lang.Exception:
11-17 10:29:15.094 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.imageshow.GeometryMathUtils.concatMirrorMatrix(GeometryMathUtils.java:223)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.imageshow.GeometryMathUtils.getFullGeometryMatrix(GeometryMathUtils.java:457)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.imageshow.GeometryMathUtils.getTrueCropRect(GeometryMathUtils.java:483)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.imageshow.GeometryMathUtils.getCropSelectionToScreenMatrix(GeometryMathUtils.java:492)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.imageshow.GeometryMathUtils.getOriginalToScreen(GeometryMathUtils.java:401)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.imageshow.GeometryMathUtils.getImageToScreenMatrix(GeometryMathUtils.java:355)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.filters.ImageFilter.getOriginalToScreenMatrix(ImageFilter.java:82)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.filters.ImageFilterDraw.apply(ImageFilterDraw.java:334)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.pipeline.FilterEnvironment.applyRepresentation(FilterEnvironment.java:135)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.pipeline.ImagePreset.applyFilters(ImagePreset.java:539)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.pipeline.ImagePreset.apply(ImagePreset.java:455)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.pipeline.CachingPipeline.renderHighres(CachingPipeline.java:239)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.pipeline.HighresRenderingRequestTask.doInBackground(HighresRenderingRequestTask.java:75)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.pipeline.ProcessingTask.processRequest(ProcessingTask.java:70)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at cn.com.protruly.vrbrowser.view.filtershow.pipeline.ProcessingTaskController.handleMessage(ProcessingTaskController.java:60)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:107)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at android.os.Looper.loop(Looper.java:207)
11-17 10:29:15.095 13366-13427/com.protruly.gallery3d.app:filtershow W/System.err:     at android.os.HandlerThread.run(HandlerThread.java:61)

ImageFilterDraw.java
//mParameters.getDrawing()存储的是画线的点数据
//paint函数画线
apply->drawData->paint 

IconView.java //图片编辑效果显示小框图相关文件

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325898532&siteId=291194637