2011-09-16 36 views
2

我在OnDraw(Canvas)中创建了一个图像,我试图保存该图像,但其不Working.image保存为零大小。 这里我的编码如何从Android应用程序中的Canvas代码保存图像?

private int w; 
private int h; 
@Override protected void onSizeChanged(int w, int h, int oldw, int oldh) 
{ 
    this.w = w; 
    this.h = h; 
    super.onSizeChanged(w, h, oldw, oldh); 
} 

@Override 
protected void onDraw(Canvas canvas) 
{ 
       // TODO Auto-generated method stub 
    Bitmap toDisk = Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888); 
    canvas.setBitmap(toDisk); 

       Paint paint = new Paint(); 

       Bitmap myBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.ban_background); 
       Bitmap resizeImage1=Bitmap.createScaledBitmap(myBitmap,590,350,false); 
       canvas.drawColor(Color.BLACK); 
       canvas.drawBitmap(resizeImage1,10,5, null); 
       paint.setStyle(Paint.Style.FILL); 
       paint.setAntiAlias(true); 
       paint.setTextSize(25); 
       paint.setColor(Color.BLUE); 
       paint.setFakeBoldText(true); 

       Bitmap icon; 
       Bitmap icon1; 
       Bitmap icon2; 

       try { // Get reference to AssetManager 
       AssetManager mngr = getAssets(); 

         // Create an input stream to read from the asset folder 
         InputStream ins = mngr.open(imageName+".png"); 
         icon = BitmapFactory.decodeStream(ins); 
         Bitmap icon9=Bitmap.createScaledBitmap(icon,590,250,false); 
         canvas.drawBitmap(icon9,1,60, null); 
         canvas.save(); 


       if(isCamera) 
       { 

       icon1 = BitmapFactory.decodeByteArray(pictureByte, 0,pictureByte.length); 
       Bitmap resizeImage=Bitmap.createScaledBitmap(icon1,150,170,false); 
       canvas.drawBitmap(resizeImage,400,100, null); 
       canvas.save(); 
       } 


       if(isPhotoGallery) 
       { 
        Bitmap myBitmap1 = BitmapFactory.decodeFile(selectedImagePath); 
        Bitmap resizeImage=Bitmap.createScaledBitmap(myBitmap1,150,170,false); 
        canvas.drawBitmap(resizeImage,400,100, null); 
       } 
       if(isImageSearch) 
       { 
        icon2= BitmapFactory.decodeByteArray(pictureByte, 0,pictureByte.length); 
        canvas.drawBitmap(icon2,10,10, null); 
       } 
       paint.setTextSize(30); 
       canvas.drawText(CameraText, 100,175, paint); 

        getDrawingCache().compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File("/mnt/sdcard/arun.jpg"))); 
       } catch (Exception e) { 
        Log.e("Error--------->", e.toString()); 
       } 
       // Bitmap toDisk = Bitmap.createBitmap(resizeImage1); 
       //s canvas.setBitmap(toDisk);  /* code... */  
       try { 
        toDisk.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File("/mnt/sdcard/arun.jpg"))); 
       } catch (FileNotFoundException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
+0

http://stackoverflow.com/questions/5029775/save-the-image-made-by-user-in-fingerpaint-api- demos-in-android 请参阅上面的链接以获取答案。 – krisDrOid

回答

2

试试这个:

private int w; 
private int h; 

@Override 
protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
    this.w = w; 
    this.h = h; 
    super.onSizeChanged(w, h, oldw, oldh); 
} 


protected void onDraw(Canvas canvas) 
{ 
    Bitmap toDisk = Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888); 
    canvas.setBitmap(toDisk); 

    /* code... */ 

    toDisk.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File("/mnt/sdcard/arun.jpg"))); 

    /* code... */ 
} 
+0

什么参数将我通过(/ *适当的参数* /) – new

+0

先生在我的onDraw(),我有添加许多图像但在这里,我只能通过一个参数。我可以采取所有图片(最终图片)? – new

+0

+1谢谢主席先生Working.But我可以查看只有一个Image..How我可以查看所有图像先生 – new

相关问题