آموزش خواندن عکس از پوشه assets در اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش خواندن عکس از پوشه assets در اندروید می پردازیم آموزش های متفاوتی دباره خواندن فایل از پوشه Assets قرار دادیم در ادامه آموزش خواندن عکس از پوشه assets در اندروید را برای شما قرار میدهیم با ما همراه باشید.
راه های مختلفی برای خواندن عکس از پوشه assets وجود دارد ولی ما به شما توصیه می کنیم عکس هایتان را در این پوشه قرار ندهید اصلا دلیلی نداره این پوشه از عکس پر بشه چون limit پوشه assets برابر با 25 مگ و پوشه drawable حدودا 60 مگ !
ساده ترین روش برای خواند عکس مثل زیر خواهد بود.
1 2 3 4 5 6 7 8 | try { InputStream ims = getAssets().open("avatar.jpg"); Drawable d = Drawable.createFromStream(ims, null); mImage.setImageDrawable(d); } catch(IOException ex) { return; } |
کد بالا یکم شاید براتون محدودیت ایجاد کند در ادامه کدی قرار میدهیم تا bitmap عکس را از پوشه assets به دست بیارید در بالا نام عکس را باید به متد open ارسال کنید سپس یک stream از آن دریافت می کنید سپس با استفاده از کلاس createFromStream یک Drawable میسازیم و به ImageView ست می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | protected String openImageInAssets(String imageName){ String encodedImageBase64 = ""; AssetManager assetManager = getAssets(); InputStream fileStream = null; try { fileStream = assetManager.open(imageName); if(fileStream != null){ Bitmap bitmap = BitmapFactory.decodeStream(fileStream); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); int fileExtensionPosition = imageName.lastIndexOf('.'); String fileExtension = imageName.substring(fileExtensionPosition+1); if(fileExtension.equalsIgnoreCase("png")){ bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); }else if(fileExtension.equalsIgnoreCase("jpg") || fileExtension.equalsIgnoreCase("jpeg")){ bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); } byte[] byteArray = byteArrayOutputStream.toByteArray(); String imgageBase64 = Base64.encodeToString(byteArray, Base64.DEFAULT); encodedImageBase64 = "data:image/png;base64," + imgageBase64; } } catch (IOException e) { e.printStackTrace(); return encodedImageBase64=""; } finally { try { if(fileStream != null) { fileStream.close(); fileStream = null; } } catch (IOException e) { e.printStackTrace(); } } return encodedImageBase64; } |
کد بالا یک کلاس کامل است که نام فایل را میدهید و در نهایت بعد از فشرده سازی یک base64 برمی گرداند اگر خواستید می توانید bitmap آن را نیز return کنید.
یک کد دیگر که bitmap خروجی میدهد.
1 2 3 4 5 6 7 8 9 10 11 12 | public static Bitmap getBitmapFromAsset(Context context, String filePath) { AssetManager assetManager = context.getAssets(); InputStream istr; Bitmap bitmap = null; try { istr = assetManager.open(filePath); bitmap = BitmapFactory.decodeStream(istr); } catch (IOException e) { // handle exception } return bitmap; } |
این آموزش هم به پایان رسید.
موفق و موید باشیید.