2017-03-24 1 views
-1

s'il vous plaît aidez-moi à trouver le code ou éditer mon code enregistrer la toile à png flie.Android - Canvas sauvegarder l'image (FERMER)

(humm je peux l'enregistrer mais ne peut pas l'ouvrir, mes .png sont noirs.)

désolé pour mon 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

double possible de [Comment enregistrer l'image à partir du code toile dans Application Android?] (Http://stackoverflow.com/questions/7442610/how-to-save-the-image-from-canvas- code-dans-android-application) –

Répondre

-1

toile Enregistrer à l'image en se référant code suivant extrait

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

PNGs sont noirs parce que sa transparence. Colorez-le lorsque vous initialisez. Vous pouvez utiliser l'extrait de code suivant pour enregistrer le canevas actuel en tant qu'image .png. Son calme simple.

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 

}