بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

ذخیره عکس با حجم کمتر

مدیریت گفتگو
SaeiD-as 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام دوستان، وقتتون بخیر و شادی

داخل برنامه ام با گوشی عکس میگیرم، زمانی که میخوام اونو ذخیره کنم داخل متد onActivityResult از کد زیر استفاده می کنم تا عکس رو با حجم کمتری ذخیره کنم:

 Bitmap bitmap = BitmapFactory.decodeFile(G.DIR + ImageName, options);

                bitmap = Bitmap.createScaledBitmap(bitmap, 100, 100, false);
                ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);

مشکلی که دارم حجم عکس خیلی کوچیک میشه و داخل برنامه شطرنجی نشون داده میشه

بنظرتون راه حلش چیه؟

نظرات

Criss 10 سال پیش
توی کد بالا داری اندازه عکس رو 100 پیکسل در 100 پیکسل قرار میدی
SaeiD-as 10 سال پیش
دمت گرم کریس جان، من فکر میکردم اون 100 درصد بزرگی عکسه که بالاتر نمیتونه باشه! :) بنظرت چه اندازه ای قرارش بدم خوبه برای سرعت برنامه و کیفیت عکس؟

پاسخ‌ها 1

ajn91 10 سال پیش

اگه نمیخواید سایز عکس رو تغییر بدید میتونید از کیفیت عکس کم کنید.با تغییر REQUIRED_SIZE کیفیت تغییر میکنه هرچه پایینتر کیفیت کمتر

private Bitmap decodeFile(File f) {
   try {
      // Decode image size
      BitmapFactory.Options options = new BitmapFactory.Options();
      options.inJustDecodeBounds = true;
      BitmapFactory.decodeStream(new FileInputStream(f), null, options);

      // The new size we want to scale to
      final int REQUIRED_SIZE = 100;

      // Find the correct scale value. It should be the power of 2.
      int scale = 1;
      while (options.outWidth / scale / 2 >= REQUIRED_SIZE &&
                   options.outHeight / scale / 2 >= REQUIRED_SIZE) {
         scale *= 2;
      }

      // Decode with inSampleSize
      BitmapFactory.Options options1 = new BitmapFactory.Options();
      options1.inSampleSize = scale;
      return BitmapFactory.decodeStream(new FileInputStream(f), null, options1);
   } catch (FileNotFoundException e) {
   }
   return null;
}

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .