تبدیل چند بیتمپ به یک بیتمپ، به معنای ترکیب آن است. یعنی چند تصویر را کنارهم قرار دهیم.
برای انجام این کار، میتوان از متد زیر استفاده کرد:
public static Bitmap combineImageIntoOne(ArrayList<Bitmap> bitmap) { int w = 0, h = 0; for (int i = 0; i < bitmap.size(); i++) { if (i < bitmap.size() - 1) { w = bitmap.get(i).getWidth() > bitmap.get(i + 1).getWidth() ? bitmap.get(i).getWidth() : bitmap.get(i + 1).getWidth(); } h += bitmap.get(i).getHeight(); } Bitmap temp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(temp); int top = 0; for (int i = 0; i < bitmap.size(); i++) { Log.d("HTML", "Combine: "+i+"/"+bitmap.size()+1); top = (i == 0 ? 0 : top+bitmap.get(i).getHeight()); canvas.drawBitmap(bitmap.get(i), 0f, top, null); } return temp; }
این متد، لیستی از Bitmap ها را دریافت کرده و سپس تمامی آنها را در یک Bitmap قرار میدهد.
مثال
به کد زیر دقت کنید:
Bitmap bm1 = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher); ArrayList<Bitmap> a=new ArrayList<Bitmap>(); a.add(bm1); a.add(bm1); a.add(bm1); Bitmap result = combineImageIntoOne(a);
در اینجا یک آبجکت Bitmap را از تصویری که در Drawable ریسورس قرار دارد ایجاد میکنیم؛ و سپس لیستی از Bitmap ها میسازیم. در نهایت با ارسال لیست به درون تابع combineImageIntoOne، خروجی را از آن دریافت کرده و سپس میتوانیم از این خروجی هرجا که خواستیم استفاده کنیم. مثلا آن را روی یک ImageView تنظیم کنیم تا نمایش داده شود. البته فراموش نکنید که با ترکیب بیتمپها، تصویر نهایی بزرگتر از قبل خواهد شد.
نظرات ثبت شده بدون دیدگاه