2011-12-07 8 views
6

मैं ओवरलैपिंग द्वारा दो अलग-अलग छवियों के साथ एक संयुक्त छवि बनाना चाहता हूं।एंड्रॉइड में दो छवियों को विलय करने के लिए कैनवास का उपयोग कैसे करें?

इस मेरे कोड के लिए

ImageView image = (ImageView) findViewById(R.id.imageView1); 
    Drawable drawableFore = getResources().getDrawable(R.drawable.foreg); 
    Drawable drawableBack = getResources().getDrawable(R.drawable.backg); 

    Bitmap bitmapFore = ((BitmapDrawable) drawableFore).getBitmap(); 
    Bitmap bitmapBack = ((BitmapDrawable) drawableBack).getBitmap(); 

    Bitmap scaledBitmapFore = Bitmap.createScaledBitmap(bitmapFore, 35, 35, true); 
    Bitmap scaledBitmapBack = Bitmap.createScaledBitmap(bitmapBack, 45, 45, true); 

    Bitmap combineImages = overlay(scaledBitmapBack, scaledBitmapFore); 

    image.setImageBitmap(combineImages); 

ओवरले() विधि

public static Bitmap overlay(Bitmap bmp1, Bitmap bmp2) 
{ 
try 
{ 
    Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig()); 
    Canvas canvas = new Canvas(bmOverlay); 
    canvas.drawBitmap(bmp1, new Matrix(), null); 
    canvas.drawBitmap(bmp2, 0, 0, null); 
    return bmOverlay; 
} catch (Exception e) 
{ 
    // TODO: handle exception 
    e.printStackTrace(); 
    return null; 
} 
} 

मामले 1 है: ओवरले विधि इस मामले में अशक्त देता है।

केस 2: लेकिन जब मैं छवियों को स्विच करता हूं जैसे पृष्ठभूमि में सेटिंग के लिए अग्रभूमि और अग्रभूमि छवि में सेटिंग के लिए पृष्ठभूमि छवि का उपयोग करता हूं तो कोड ठीक काम करता है।

लेकिन मुझे लगता है कि पहला मामला ठीक से काम करना चाहिए लेकिन ऐसा नहीं है। मुझे यह नहीं मिल रहा है कि यह क्यों हो रहा है।

+0

मुझे नहीं पता कि क्यों, अब यह काम कर रहा है। – AB1209

उत्तर

10

मदद कृपया मुझे लगता है कि, इसलिए होता है क्योंकि 2 बिटमैप आकार में बड़ा है। तो इसे आजमाएं:

public static Bitmap overlay(Bitmap bmp1, Bitmap bmp2) 
{ 
try 
{ 
    int maxWidth = (bmp1.getWidth() > bmp2.getWidth() ? bmp1.getWidth() : bmp2.getWidth()); 
    int maxHeight = (bmp1.getHeight() > bmp2.getHeight() ? bmp1.getHeight() : bmp2.getHeight()); 
    Bitmap bmOverlay = Bitmap.createBitmap(maxWidth, maxHeight, bmp1.getConfig()); 
    Canvas canvas = new Canvas(bmOverlay); 
    canvas.drawBitmap(bmp1, 0, 0, null); 
    canvas.drawBitmap(bmp2, 0, 0, null); 
    return bmOverlay; 

} catch (Exception e) 
{ 
    // TODO: handle exception 
    e.printStackTrace(); 
    return null; 
} 
} 
+0

धन्यवाद यह अब काम कर रहा है। – AB1209

+1

@ कैनर: एक आकर्षण की तरह काम !! धन्यवाद। – dakshbhatt21

संबंधित मुद्दे