Android tomonidan kamera yordamida olingan rasm sifati qanday kamayadi?

Muammo shundaki ... juda yaxshi sifatli kamera bor deb o'ylayman. Oliy rezolyutsiyani qaytara olaman.Bu tasvirni serverga yuklashni xohlayman. Rasm hajmi juda katta bo'lsa rasm sifatini kamaytirishni istayman. Har qanday yordam? Rahmat oldindan.

1

6 javoblar

Ha, buni amalga oshirish uchun Bitmap.compress() dan foydalanishingiz mumkin, buning uchun faqatgina kompress formatini, sifatini va chiqish formatini ko'rsating. Quyidagi havolaga qarang " https://developer.android .com/mos yozuvlar/android/grafikalar/Bitmap.html # compress (android.graphics.Bitmap.CompressFormat , int, java.io.OutputStream) ".

Agar sizga yordam berayotgan bo'lsa, menga xabar bering!

2
qo'shib qo'ydi
Bu yaxshi. Lekin menimcha, bu biroz vaqt talab qiladigan ilovani sekinlatadi deb o'ylayman. Kamera o'lchamini pragmatik tarzda o'zgartirishga qarshi turishim kerakmi? Bu menga kichkina o'lchamdagi (kb) rasm chiqishni beradi?
qo'shib qo'ydi muallif Arnab Kundu, manba
Bitmapni asta-sekin saqlashni topsangiz, quyidagini sinab ko'ring: JPEG formatini ishlatishga harakat qiling va PNG-ni faqat kerak bo'lganda foydalaning. Bitmap.compress (Bitmap.CompressFormat.JPEG, 100, tashqarida); Agar bitmap yaratilsa va shaffoflik haqida qayg'urmasangiz, u holda Bitmap.Config.RGB_565 < Bitmap.Config.ARGB_8888 amalga amalga oshiriladi. Bitmap bitmap = Bitmap.createBitmap (kenglik, balandlik, Bitmap.Config.RGB_565) dan foydalaning;
qo'shib qo'ydi muallif saarang tiwari, manba

Ha, buni amalga oshirish uchun Bitmap.compress() dan foydalanishingiz mumkin, buning uchun faqatgina kompress formatini, sifatini va chiqish formatini ko'rsating. Quyidagi havolaga qarang " https://developer.android .com/mos yozuvlar/android/grafikalar/Bitmap.html # compress (android.graphics.Bitmap.CompressFormat , int, java.io.OutputStream) ".

Agar sizga yordam berayotgan bo'lsa, menga xabar bering!

2
qo'shib qo'ydi
Bu yaxshi. Lekin menimcha, bu biroz vaqt talab qiladigan ilovani sekinlatadi deb o'ylayman. Kamera o'lchamini pragmatik tarzda o'zgartirishga qarshi turishim kerakmi? Bu menga kichkina o'lchamdagi (kb) rasm chiqishni beradi?
qo'shib qo'ydi muallif Arnab Kundu, manba
Bitmapni asta-sekin saqlashni topsangiz, quyidagini sinab ko'ring: JPEG formatini ishlatishga harakat qiling va PNG-ni faqat kerak bo'lganda foydalaning. Bitmap.compress (Bitmap.CompressFormat.JPEG, 100, tashqarida); Agar bitmap yaratilsa va shaffoflik haqida qayg'urmasangiz, u holda Bitmap.Config.RGB_565 < Bitmap.Config.ARGB_8888 amalga amalga oshiriladi. Bitmap bitmap = Bitmap.createBitmap (kenglik, balandlik, Bitmap.Config.RGB_565) dan foydalaning;
qo'shib qo'ydi muallif saarang tiwari, manba

Agar Android kodini yozsam, sizga kerakli tasvir sifatini o'rnatish va JPEG formatida saqlash/transkod qilishni tavsiya qilaman

This is an answer to the opposite question - which should give you what you need?: How to compress Bitmap as JPEG with least quality loss on Android?

1
qo'shib qo'ydi
Ushbu link bu savolga javob berishi mumkin bo'lsa-da, javobning muhim qismlarini bu yerga qo'shishingiz va havola qilish uchun havolani taqdim qilish yaxshiroqdir. Linkli sahifalar o'zgartirilsa, faqat aloqa uchun javoblar bekor bo'lishi mumkin. - Sharhdan
qo'shib qo'ydi muallif Maksim Simkin, manba
@ArnabKundu Men javobimni o'zgartirdim - bu boshqa savolning kopyasimi bo'lishi mumkinligini taklif qildi ... Androidda x% sifatli JPEGni qanday saqlaysiz? HTH
qo'shib qo'ydi muallif Ian Grainger, manba
@MaksimSimkin Albatta - lekin bu aslida bu savolning ikki nusxasi yoki men uni dupe deb belgilaganim deb o'ylayman ... Menimcha, buni dublikat deb qabul qilish yaxshiroqdir.
qo'shib qo'ydi muallif Ian Grainger, manba
Rahmat, lekin Android kodini xohlayman. Ilova emas. Aslida kamera uchun kod yozdim va rasmni yuklayman, lekin uploaddan oldin rasm hajmini (kb) kamaytirishni xohlayman.
qo'shib qo'ydi muallif Arnab Kundu, manba
Yordamingiz uchun rahmat. Buni tekshirib ko'raman.
qo'shib qo'ydi muallif Arnab Kundu, manba

Agar Android kodini yozsam, sizga kerakli tasvir sifatini o'rnatish va JPEG formatida saqlash/transkod qilishni tavsiya qilaman

This is an answer to the opposite question - which should give you what you need?: How to compress Bitmap as JPEG with least quality loss on Android?

1
qo'shib qo'ydi
Ushbu link bu savolga javob berishi mumkin bo'lsa-da, javobning muhim qismlarini bu yerga qo'shishingiz va havola qilish uchun havolani taqdim qilish yaxshiroqdir. Linkli sahifalar o'zgartirilsa, faqat aloqa uchun javoblar bekor bo'lishi mumkin. - Sharhdan
qo'shib qo'ydi muallif Maksim Simkin, manba
@ArnabKundu Men javobimni o'zgartirdim - bu boshqa savolning kopyasimi bo'lishi mumkinligini taklif qildi ... Androidda x% sifatli JPEGni qanday saqlaysiz? HTH
qo'shib qo'ydi muallif Ian Grainger, manba
@MaksimSimkin Albatta - lekin bu aslida bu savolning ikki nusxasi yoki men uni dupe deb belgilaganim deb o'ylayman ... Menimcha, buni dublikat deb qabul qilish yaxshiroqdir.
qo'shib qo'ydi muallif Ian Grainger, manba
Rahmat, lekin Android kodini xohlayman. Ilova emas. Aslida kamera uchun kod yozdim va rasmni yuklayman, lekin uploaddan oldin rasm hajmini (kb) kamaytirishni xohlayman.
qo'shib qo'ydi muallif Arnab Kundu, manba
Yordamingiz uchun rahmat. Buni tekshirib ko'raman.
qo'shib qo'ydi muallif Arnab Kundu, manba

Menimcha Uploadable Image ning rasm formati odatda * .raw eng katta hajmga ega. Siz jpg/png rasmlarni yuklamoqchi bo'lsangiz. Tasvirlarni saqlashda faqat fayl nomi sifatida Filename.jpg dan foydalaning va rasm saqlanadi .tizish uchun. Siz faylni yuklaganingizdan keyin uni o'chirib tashlashingiz mumkin. Media Store probasi {service} yangilanib bo'lmaguncha, sizning galereyangizda aks ettirilmaydi. Buni https://github.com/googlesamples/android-Camera2Basic dan foydalanishingiz mumkin. ilovangizni qurish uchun

1
qo'shib qo'ydi

Buni harakat qilib ko'ring: KBda aniq hajmdagi tasvirni olish

/**
 * reduces the size of the image
 * param image bitmap received from camera
 * @param maxSize
 * @return
 */
public Bitmap getResizedBitmap(Bitmap image, int maxSize) {
    int width = image.getWidth();
    int height = image.getHeight();

    float bitmapRatio = (float)width/(float) height;
    if (bitmapRatio > 0) {
        width = maxSize;
        height = (int) (width/bitmapRatio);
    } else {
        height = maxSize;
        width = (int) (height * bitmapRatio);
    }
    return Bitmap.createScaledBitmap(image, width, height, true);
}

quyidagi kabi foydalaning:

Bitmap scaledImage = getResizedBitmap(photo, 200); //here 200 is maxsize

From Wikipedia

Eng yuqori sifatli tasvirlar uchun (Q = 100) rang pikseliga taxminan 8.25 bitlik talab qilinadi

So, for Q=100 on an 200x200 image, that would result in (200 * 200) px * 8.25 bits/px = 330000 bits = ~ 41 kB which is surely less than 64KB

siz boshqa o'lcham uchun ham harakat qilishingiz mumkin .. faqat maxSize parametrini o'zgartiring

0
qo'shib qo'ydi