私はこの単純な機能を持っています:
private Bitmap rotateImg(Bitmap b){
Matrix bMat = new Matrix();
bMat.preRotate(30, b.getWidth()/2, b.getHeight()/2);
return Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), bMat,false);
}
次のように実行されます。
currentStateImg = rotateImg(currentStateImg);
なんらかの理由で、初めて実行するときは完全に機能しますが、実行するたびにビットマップを回転させますが、VM がメモリ不足になるまでイメージを大きくします (周囲に空白を残します)。
私はすでに試しました:
postRotate
preRotate
setRotate
setting the last element of createBitmap (filter) to true/false
returning a copy of the resulted bitmap from createBitmap so i could apply the config Config.ARGB_8888
奇妙なことは、私もこのコードを試したことです:
RectF r = new RectF(0,0,b.getWidth(),b.getHeight());
bMat.mapRect(r);
2回目の実行では、行列計算(r.width()とr.height()の値)が実行されるたびにすでに大きな画像サイズを返しているため、行列値の問題であり、関連していないようですcreateBitmap() 関数に
誰が問題になる可能性があるかについて何らかの考えを持っていますか? 必要な回数だけビットマップを回転できるようにするには、どの値を変更する必要がありますか?
よろしく。