2011-05-10 11 views
5

jak połączyć dwa obrazy w Androidzie poprzez programowanie w java i zapisać na zewnętrznej karcie SD lub w innym miejscu.Połączyć obrazy w Androidzie

+0

co dokładnie masz na myśli poprzez połączenie dwóch obrazów? –

+0

Mam dwa różne obrazy Chcę zrobić program w Androidzie, które łączą te obrazy jako jeden obraz przez programowanie. – Herry

+1

Jeszcze raz, co masz na myśli, łącząc. Jeśli masz dwa obrazy, które chcesz utworzyć pojedynczy obraz, który jest konkatenacją dwóch lub chcesz w jakiś sposób zsumować wartości pikseli. Jeśli pierwsze zdjęcie jest większe niż drugie? Wyjaśnij bardziej szczegółowo: –

Odpowiedz

2

Wypróbuj ten kod.

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; 

w 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"); 

w Manifest dodać ten wykorzystuje-pozwolenie <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

8

Spróbuj poniżej kod

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

cześć Mam błąd w tym kodzie, pokazuje bitmapę jest niezmienna ??? co to jest. Dzięki – Herry

+0

gdzie w którym wierszu jest napisane i czy dokładnie używasz tego kodu? – ingsaurabh

+0

na linii płótna pokazuje błąd w dowolny sposób, dziękuję dostałem odpowiedź z tego linku [http://ketankantilal.blogspot.com/2011/03/how-to-combine-images-and-store-to.html dziękuję za pomoc. – Herry

Powiązane problemy