こんにちは:私は2つのファイル(左右)に画像を持っています。これはimageswitcherで設定したいDrawableを返す関数です:アンドロイドで2つの画像を操作しているときにメモリ不足とOpenGLエラーが発生しました
public Drawable getImage(String left, String right){
System.err.println("Decoding both images");
Bitmap Left = BitmapFactory.decodeFile(left);
Bitmap Right = BitmapFactory.decodeFile(right);
int height = Math.max(Left.getHeight(),Right.getHeight());
int width = Left.getWidth() + Right.getWidth();
Bitmap result = Bitmap.createBitmap(width,height,Config.RGB_565);
System.err.println("Creating the canvas");
Canvas bothImages = new Canvas(result);
System.err.println("Drawing both images beside each other");
bothImages.drawBitmap(Left, 0f, 0f, null);
bothImages.drawBitmap(Right, Left.getWidth(), 0f, null);
System.err.println(Integer.toString(bothImages.getWidth()) + " x " + Integer.toString(bothImages.getHeight()));
bothImages.rotate(90f);
System.err.println(Integer.toString(bothImages.getWidth()) + " x " + Integer.toString(bothImages.getHeight()));
System.err.println("returning Drawable Left");
return new BitmapDrawable(result);
}
私は2つの問題があります。私がConfig.ARGB_8888を使うとメモリ不足になるだから私はRGB_565に変更しました。しかし、これは画像の品質を低下させます。とにかくこれの周りにはありますか?
06-19 09:16:23.760: WARN/System.err(26218): Attempting to show /mnt/sdcard/Work/.temp/0000.jpg
06-19 09:16:23.760: WARN/System.err(26218): Decoding both images
06-19 09:16:24.510: WARN/System.err(26218): Creating the canvas
06-19 09:16:24.510: WARN/System.err(26218): Drawing both images beside each other
06-19 09:16:24.530: WARN/System.err(26218): 2560 x 1971
06-19 09:16:24.530: WARN/System.err(26218): 2560 x 1971
06-19 09:16:24.530: WARN/System.err(26218): returning Drawable Left
06-19 09:16:24.570: WARN/OpenGLRenderer(26218): Bitmap too large to be uploaded into a texture
06-19 09:16:24.850: WARN/OpenGLRenderer(26218): Bitmap too large to be uploaded into a texture
06-19 09:16:24.870: WARN/System.err(26218): Inside On resume
06-19 09:16:24.870: WARN/System.err(26218): About to set up animations
06-19 09:16:24.870: WARN/System.err(26218): On resume Done
06-19 09:16:24.870: WARN/System.err(26218): Attempting to show /mnt/sdcard/Work/.temp/0000.jpg
06-19 09:16:24.870: WARN/System.err(26218): Decoding both images
06-19 09:16:25.610: WARN/System.err(26218): Creating the canvas
06-19 09:16:25.610: WARN/System.err(26218): Drawing both images beside each other
06-19 09:16:25.640: WARN/System.err(26218): 2560 x 1971
06-19 09:16:25.640: WARN/System.err(26218): 2560 x 1971
06-19 09:16:25.640: WARN/System.err(26218): returning Drawable Left
06-19 09:16:25.660: WARN/OpenGLRenderer(26218): Bitmap too large to be uploaded into a texture
06-19 09:16:25.690: WARN/OpenGLRenderer(26218): Bitmap too large to be uploaded into a texture
そして、私は明らかに生成された画像を見ることはありません。
第二にも、私は次のコンソールメッセージを取得コンフィグ設定を変更します。だから私は何が間違っているのか知りたいですか?
アクティビティの開始時に最初の2つのイメージが表示されるようにして、上のコードがアクティビティのOnResumeメソッドで呼び出されるようにします。なぜこのメソッドが2回実行されるのかを誰にでも教えてくれますか?多分私のメモリ不足のエラー これと関係があります...
ご協力ありがとうございます。