2011-05-10 4 views
5

comment fusionner deux images en android en programmant en java et enregistrez dans la carte SD externe ou ailleurs.Combiner des images en android

+0

ce que voulez-vous dire par la fusion de deux images? –

+0

J'ai deux images différentes que je veux faire un programme dans Android qui combinent ces images en une image par programmation. – Herry

+1

Encore une fois, que voulez-vous dire par combiner. Si vous avez deux images, vous voulez produire une image unique qui est la concaténation des deux ou vous voulez additionner les valeurs de pixels en quelque sorte. Si la première image est plus grande que la seconde? S'il vous plaît expliquer dans plus de détails –

Répondre

2

Essayez ce code.

private static final String TAG = "JoinImage"; 
private Bitmap mBackImage, mTopImage, mBackground; 
private BitmapDrawable mBitmapDrawable; 
private static String mTempDir; 
private String mSavedImageName = null; 
private FileOutputStream mFileOutputStream = null; 
private Canvas mCanvas; 

dans onCreate()

//Create folder in SDCard to store newly generated image 
mTempDir = Environment.getExternalStorageDirectory() + "/TestTemp/"; 
File mTempFile = new File(mTempDir); 
if(!mTempFile.exists()) { 
    mTempFile.mkdirs(); 
} 
//File name 
mSavedImageName = "Test.png"; 
//Width = 604, Height = 1024 Change as per your requirement 
mBackground = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); 
//Put back and top images in your res folder 
mBackImage = BitmapFactory.decodeResource(getResources(), R.drawable.launcher); 
mTopImage = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); 

mCanvas = new Canvas(mBackground); 
mCanvas.drawBitmap(mBackImage, 0f, 0f, null); 
mCanvas.drawBitmap(mTopImage, 12f, 12f, null); 

try { 
    mBitmapDrawable = new BitmapDrawable(mBackground); 
    Bitmap mNewSaving = mBitmapDrawable.getBitmap(); 
    String FtoSave = mTempDir + mSavedImageName; 
    File mFile = new File(FtoSave); 
    mFileOutputStream = new FileOutputStream(mFile); 
    mNewSaving.compress(CompressFormat.PNG, 95, mFileOutputStream); 
    mFileOutputStream.flush(); 
    mFileOutputStream.close(); 
} catch(FileNotFoundException e) { 
    Log.e(TAG, "FileNotFoundExceptionError " + e.toString()); 
} catch(IOException e) { 
    Log.e(TAG, "IOExceptionError " + e.toString()); 
} 
Log.i(TAG, "Image Created"); 

dans Manifest ajouter cette autorisation utilise-<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

8

Essayez ci-dessous le code

private Bitmap joinImages(File first, File second) 
{ 
    Bitmap bmp1, bmp2; 
    bmp1 = BitmapFactory.decodeFile(first.getPath()); 
    bmp2 = BitmapFactory.decodeFile(second.getPath()); 
    if (bmp1 == null || bmp2 == null) 
     return bmp1; 
    int height = bmp1.getHeight(); 
    if (height < bmp2.getHeight()) 
     height = bmp2.getHeight(); 

    Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth() + bmp2.getWidth(), height, Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(bmOverlay); 
    canvas.drawBitmap(bmp1, 0, 0, null); 
    canvas.drawBitmap(bmp2, bmp1.getWidth(), 0, null); 
    return bmOverlay; 
} 
+0

Salut j'ai eu une erreur dans ce code, il montre bitmap est immuable ??? Qu'est-ce que c'est. Merci – Herry

+0

où sur quelle ligne il dit et utilisez-vous ce code exactement? – ingsaurabh

+0

à la ligne de toile, il montre une erreur de toute façon merci j'ai eu la réponse de ce lien [http://ketankantilal.blogspot.com/2011/03/how-to-combine-images-and-store-to.html merci pour l'aide. – Herry