0

使いたい画像をぼかしたいとき

import android.support.v8.renderscript.*

だから私はこれを私のbuild.gradleファイルに入れました:

android {
compileSdkVersion 23
buildToolsVersion '23.0.1'"

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 23

    renderscriptTargetApi 18
    renderscriptSupportModeEnabled true

}}

そして、この方法を使用して画像をぼかします。

    public static Bitmap blur(Context ctx, Bitmap image) {
    int width = Math.round(image.getWidth() * BITMAP_SCALE);
    int height = Math.round(image.getHeight() * BITMAP_SCALE);

    Bitmap inputBitmap = Bitmap.createScaledBitmap(image, width, height, false);
    Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);

    RenderScript rs = RenderScript.create(ctx);
    ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
    Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);
    Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
    theIntrinsic.setRadius(BLUR_RADIUS);
    theIntrinsic.setInput(tmpIn);
    theIntrinsic.forEach(tmpOut);
    tmpOut.copyTo(outputBitmap);

    return outputBitmap;
}

しかし、コードは次の行でクラッシュします。

RenderScript rs = RenderScript.create(ctx);

このエラーを与える:

03-03 14:40:02.965 27865-27865/com.myorder.app E/AndroidRuntime: FATAL EXCEPTION: main
                                                             java.lang.NoClassDefFoundError: android.support.v8.renderscript.RenderScript
                                                                 at com.myorder.profile.BlurBuilder.blur(BlurBuilder.java:27)
                                                                 at com.myorder.ui.SuggestionsHome$1.onResponse(SuggestionsHome.java:70)
                                                                 at com.myorder.ui.SuggestionsHome$1.onResponse(SuggestionsHome.java:59)
                                                                 at com.myorder.core.api.dao.impl.AuthDAOImpl$1.onResponse(AuthDAOImpl.java:75)
                                                                 at com.myorder.core.api.dao.impl.AuthDAOImpl$1.onResponse(AuthDAOImpl.java:62)
                                                                 at mobvolley.JacksonRequest.deliverResponse(JacksonRequest.java:84)
                                                                 at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
                                                                 at android.os.Handler.handleCallback(Handler.java:730)
                                                                 at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                 at android.os.Looper.loop(Looper.java:176)
                                                                 at android.app.ActivityThread.main(ActivityThread.java:5419)
                                                                 at java.lang.reflect.Method.invokeNative(Native Method)
                                                                 at java.lang.reflect.Method.invoke(Method.java:525)
                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
                                                                 at dalvik.system.NativeStart.main(Native Method)

ここからすべてをフォローしたので、理由がわかりません:http://developer.android.com/guide/topics/renderscript/compute.html

誰でも助けることができますか?

4

2 に答える 2

1

アプリ モジュールとライブラリ モジュールを含むプロジェクトがあります。

support.v8 クラスをインポートできるようにするために、次を使用して、ライブラリ モジュール build.gradle ファイルで Renderscript の使用を宣言しました。

    renderscriptTargetApi 23
    renderscriptSupportModeEnabled true

これはコンパイルには適していますが、それでもNoClassDefFoundErrorが発生します。

次に、アプリ モジュールの build.gradle ファイルで Renderscript の使用を再度宣言したところ、動作するようになりました。(API 23 を実行するエミュレーターと Nexus 5x デバイスでテスト済み)。

于 2016-04-01T14:42:27.323 に答える
0

これは、Proguard のストリッピングが原因で発生した可能性があります。すべての RS 関連のクラスなどを保持する方法については、いくつかのガイドがあります。.apk に含まれています。

于 2016-03-03T20:42:07.953 に答える