2010-02-01 20 views
23

पर कैनवास पर छवि मैं कैनवास पर 2 डी छवियां खींच रहा हूं।जेपीईजी फ़ाइल

मैं जेपीईजी फ़ाइल में कैनवास पर दिखाए गए चित्र को सहेजना चाहता हूं, मैं इसे कैसे कर सकता हूं?

+0

के बाद से लिंक आप के लिए भेजा लंबे मृत के बाद से है कि आप शायद सवाल ही में थोड़ा अधिक संदर्भ जोड़ सकता है? – Flexo

उत्तर

23
  1. एक खाली बिटमैप
  2. एक नया कैनवास वस्तु बनाने और इसे
  3. कॉल view.draw (कैनवस) यह आपने अभी बनाया कैनवास वस्तु पारित करने के लिए इस बिटमैप पारित पैदा करते हैं। Refer Documentation of method for details.
  4. बिटमैप की सामग्री को आउटपुटस्ट्रीम में बिटमैप की सामग्री लिखने के लिए उपयोग करें, शायद फ़ाइल।

छद्म कोड:

Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); 
Canvas canvas = new Canvas(bitmap); 
view.draw(canvas); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
+11

हैलो समूह, मैंने कोड की कोशिश की, यह एक जेपीईजी फ़ाइल उत्पन्न करता है लेकिन कैनवास तैयार आकार या कैनवास पर मैंने जो भी लिखा है, उसके पास नहीं है। कोई टिप्पणी। धन्यवाद, केतन –

+0

उत्तर के लिए धन्यवाद। –

12
  1. सेट आहरण कैश सक्षम
  2. ड्रा जो कुछ भी आप
  3. दृश्य
  4. कम्प्रेस से बिटमैप वस्तु प्राप्त करें और छवि फ़ाइल को बचाने के लिए चाहते हैं
  5. JPG में 210

import java.io.File; 
import java.io.FileOutputStream; 

import android.app.Activity; 
import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 

public class CanvasTest extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Draw2d d = new Draw2d(this); 
     setContentView(d); 
    } 

    public class Draw2d extends View { 

     public Draw2d(Context context) { 
      super(context); 
      setDrawingCacheEnabled(true); 
     } 

     @Override 
     protected void onDraw(Canvas c) { 
      Paint paint = new Paint(); 
      paint.setColor(Color.RED);   
      c.drawCircle(50, 50, 30, paint); 

      try { 
       getDrawingCache().compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File("/mnt/sdcard/arun.jpg"))); 
      } catch (Exception e) { 
       Log.e("Error--------->", e.toString()); 
      } 
      super.onDraw(c); 
     } 

    } 

}
+7

किसी भी तरह से यह ऑन-ड्रा विधि के भीतर संपीड़ित करने और सहेजने के लिए एक बुरे विचार की तरह लगता है। –

+0

यह मुझे शून्य सूचक अपवाद देता है – abh22ishek

6

कैनवस:

Canvas canvas = null; 
FileOutputStream fos = null; 
Bitmap bmpBase = null; 

bmpBase = Bitmap.createBitmap(image_width, image_height, Bitmap.Config.ARGB_8888); 
canvas = new Canvas(bmpBase); 
// draw what ever you want canvas.draw... 

// Save Bitmap to File 
try 
{ 
    fos = new FileOutputStream(your_path); 
    bmpBase.compress(Bitmap.CompressFormat.PNG, 100, fos); 

    fos.flush(); 
    fos.close(); 
    fos = null; 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 
finally 
{ 
    if (fos != null) 
    { 
     try 
     { 
      fos.close(); 
      fos = null; 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 
संबंधित मुद्दे