0

ウェブから写真を読み込み、その上でぼかしを実行して、ぼやけた画像を別のビットマップとして出力しようとしています。Android:レンダスクリプトエラー - ビットマップから割り当てを更新できません。サイズの不一致

  URL url = new URL(myUrl); 
      mNormalImage = BitmapFactory.decodeStream(url.openStream()); 

      final RenderScript rs = RenderScript.create(mContext); 
      final Allocation input = Allocation.createFromBitmap(rs, mNormalImage, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); 
      final Allocation output = Allocation.createTyped(rs, input.getType()); 
      final ScriptIntrinsicBlur script; 
      script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); 
      script.setRadius(3.f); 
      script.setInput(input); 
      script.forEach(output); 
      output.copyTo(mBlurredImage); 

と、私はエラーを取得しています:

android.renderscript.RSIllegalArgumentException: 
Cannot update allocation from bitmap, sizes mismatch 

ですが、なぜでしょう?私のコードは次のようになりますか

答えて

3

mBlurredImageはどこですか?これは、そのビットマップのサイズが入力と一致しないために起こります。

Bitmap mBlurredImage = 
    Bitmap.createBitmap(
     mNormalImage.getWidth(), 
     mNormalImage.getHeight(), 
     mNormalImage.getConfig()); 
+1

+1この回答は、次のような形式で作成してください。エラーは "output.copyTo(mBlurredImage);"で発生します。 mBlurredImageのディメンションがAllocation出力と一致しないことを示しています。また、 "CreateFromBitmap(rs、mNormalImage)"を使用して入力の割り当てを作成する方が良いです。この方法では、ビットマップデータを余分にコピーすることなく、実際に最適化された作成を使用します。 –

関連する問題