2017-03-24 13 views
-1

私はprommenを見つけたり、私のコードを保存するcanvasをpng flieに編集してください。Android - Canvas save image(CLOSE)

(うーん、私はそれを保存することができますが、それを開くことができない、私のPNGは黒です。)私のENG用

申し訳ありません。その透明なので

CanvasView.class

public Bitmap saveSignature() { 

    Bitmap bitmap = Bitmap.createBitmap(this.getWidth(), this.getHeight(), Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(bitmap); 
    this.draw(canvas); 
    Calendar calendar=Calendar.getInstance(); 
    //File file = new File(Environment.getExternalStorageDirectory() + "/Pictures/sign"+calendar.getTimeInMillis()+".png"); 
    File file = Environment.getExternalStorageDirectory(); 
    File newFile = new File(file, "test"+calendar.getTimeInMillis()+".png"); 

    try { 
     //bitmap.compress(Bitmap.CompressFormat.PNG, 100, new FileOutputStream(file)); 
     FileOutputStream fileOutputStream = new FileOutputStream(newFile); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream); 
     fileOutputStream.flush(); 
     fileOutputStream.close(); 


     Log.e("file", file.getAbsolutePath()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     Log.e("Exception", e.getLocalizedMessage()); 
    } 
    return bitmap; 
} 

Main.class

 public void saveCanvas(View view) { 
    if (ActivityCompat.checkSelfPermission(this, permissions[0]) == 1) { 

     ivSignature.setImageBitmap(canvasView.saveSignature()); 
     canvasView.clearCanvas(); 

    } else { 
     ActivityCompat.requestPermissions(this, permissions, REQUEST_CODE); 
    } 

} 
+0

可能な重複[Androidのアプリケーションでキャンバスコードからイメージを保存するには?](http://stackoverflow.com/questions/7442610/how-to-save-the-image-from-canvas-コードアンドアンドロイドアプリケーション) –

答えて

-1

次のコード

RelativeLayout z = (RelativeLayout) findViewById(R.id.CardMakerrl); 
z.setDrawingCacheEnabled(true); 
z.buildDrawingCache(); 
Bitmap bitmapSetDrawingChache = Bitmap.createBitmap(z.getDrawingCache()); 
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
try { 
    bitmapSetDrawingChache.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); 
}catch (Exception e) 
{ 
    Toast.makeText(CardMaker.this, e.getMessage(), Toast.LENGTH_SHORT).show(); 
} 
// saving in sdcard 
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "My Folder" + File.separator); 
if(!file.exists()) 
    file.mkdirs(); 

String imageName = "Data-" + DateFormat.getDateTimeInstance().format(new Date()) + ".jpg"; 
final File fileImagePath = new File(file.getAbsolutePath(), imageName); 
FileOutputStream fileOutputStream = new FileOutputStream(fileImagePath); 
fileOutputStream.write(byteArrayOutputStream.toByteArray()); 
fileOutputStream.close(); 
1

PNG画像を参照することにより、画像に保存キャンバスはブラックです。初期化するときに色付けします。 次のコードスニペットを使用すると、現在のキャンバスを.pngイメージとして保存できます。 静かでシンプルです。

customCanvas.setDrawingCacheEnabled(true); 
String imgSaved = MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), customCanvas.getDrawingCache(),UUID.randomUUID().toString()+".png", "drawing"); 
if(imgSaved!=null){ 

    //do something here 

    } 
    else{ 

    //do something here 

}