Android 图片编辑error

一、问题

1、调整锐度无效果,出现如下错误:

这里写图片描述

解决方案:
1、应该引用android.support.v8.renderscript 的包而不是android android.renderscript,下载android.support.v8.renderscript jar包放入libs文件夹引用,可以从Sdk\build-tools\xxxx\renderscript\lib 目录下拷贝renderscript-v8.jar,也可以直接用较高版本的build tools(较高的build tools已包含v8 jar)
2、在app build.gradle中添加,

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

3、重新rebuild 工程即可

2、进入图片编辑,对图片进行手绘后进行镜像变换,镜像界面异常

修改如下:

 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、进入编辑图片操作几次就会出现

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;

二、备注

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 //图片编辑效果显示小框图相关文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值