前提
Androidで動作する描画アプリ(Java)を作っています。
描画したない内容を画像として保存しようとしたところ真っ黒な画像しか保存できませんでした。
実現したいこと
Canvasに描画している内容を画像として保存する。
該当のソースコード
画像の出力処理をしているonDraw関数を記載します。
まず出力用のbitmap(bitmap)とcanvas(tmpCanvas)を作成し、canvasにbitmapを紐づけています。
for文内で表示用のcanvas(canvas)と画像出力用のcanvas(tmpCanvas)に同様のPathを描画しています。
以降で描画された画像出力用のcanvas(tmpCanvas)に紐づいたbitmapを出力しています。
androidの画面への表示は正しくできていますが、出力した画像は真っ黒になっています。
Java
1 protected void onDraw(Canvas canvas) { 2 Bitmap bitmap = Bitmap.createBitmap( 3 canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888 4 ); 5 Canvas tmpCanvas = new Canvas(bitmap); 6 7 try { 8 for(MyPaintParam paintParam : paintParamList) { 9 canvas.drawPath(paintParam.getPath(),paintParam.getPaint()); 10 tmpCanvas.drawPath(paintParam.getPath(),paintParam.getPaint()); 11 } 12 File file = new File(android.os.Environment.getExternalStoragePublicDirectory(android.os.Environment.DIRECTORY_DCIM).getPath() + "/Camera/1.JPG"); 13 file.getParentFile().mkdir(); 14 15 FileOutputStream fos = new FileOutputStream(file, true); 16 bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); 17 fos.close(); 18 } catch (FileNotFoundException e) { 19 e.printStackTrace(); 20 } catch (Exception e) { 21 e.printStackTrace(); 22 } 23 }
試したこと
Google先生に聞いても原因がわからなかったのでdrawRGB関数などでtmpCanvasの色を変えたりも試してみましたが、変わらず真っ黒な画像しか出力されませんでした。
回答1件
あなたの回答
tips
プレビュー