Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
JIyrApy
32 / 32 / 1
Регистрация: 22.08.2010
Сообщений: 252
#1

Изменение размера изображения (байты) - Программирование Android

19.04.2013, 21:21. Просмотров 1280. Ответов 5
Метки нет (Все метки)

Здравствуйте.
Возник вопрос о том, как можно сжать полученное от камеры фото. В смысле не по ширине/высоте, а по "массе" так сказать. То есть например фотография на входе весит 2 МБ, а на выходе, например, не более 200 кБ.
Использовал вот такой вариант:

Java
1
2
3
4
5
6
7
8
9
 fff - файл
BitmapFactory.Options options = new BitmapFactory.Options();
if(fff.length()>200000){
    options.inSampleSize=Math.round(fff.length()/200000);
}else{
    options.inSampleSize=1;
}
options.inPurgeable = true;
Bitmap mini1=BitmapFactory.decodeFile(fff.toString(), options);
Но в результате получается какая то белеберда. Иногда на выходе фотки очень маленькие получается. Возможно из-за того, что на входе размеры файлов неодинаковые и округление бывает то в большую, то в меньшую сторону и потому на выходе могу иметь файл и 180 кБ и 80 кБ.
Вот как можно строго задать, что если больше 200кБ, то убавь до 200 кБ, если меньше, то не трогай?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2013, 21:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Изменение размера изображения (байты) (Программирование Android):

Изменение размера изображения - Программирование Android
Здравствуйте! Интересует возможность изменения выводимого на экран изображения в Android. Требуется хак для определенного устройства....

Изменение размера W и H в layout - Программирование Android
Добрый вечер! Возник вот какой вопрос. Создаём элементы: <RelativeLayout...

Изменение размера Activity - Программирование Android
как изменить размер активити по умолчанию его размер устанавливается во весь экран как уменьшить длину и ширину активити?как вызвать...

автоматическое изменение размера шрифта - Программирование Android
как можно реализовать автомасштабирование (изменение размера шрифта в ТекстВию) Текста в зависимости от размеров экрана? Мне просто нужно...

Изменение размера шрифта в стиле программно - Программирование Android
Здрасте) Можно ли в коде программы работать со стилями и изменять их параметры, если да, то как? Я сделал стиль для кнопок, и хотел бы...

Диначеское изменение вышины компонента (размера шрифта) - Программирование Android
Здравствуйте. В программе на вертикальном LinearLayout-е есть различные компоненты типа TextView, Button, Spinner, EditText. С шириной...

5
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
19.04.2013, 21:32 #2
на первый взгляд все правильно, подебагайте.

Добавлено через 2 минуты
Цитата Сообщение от JIyrApy Посмотреть сообщение
округление бывает то в большую
скорее всего так и есть, не думаю что можно задать желательный размер в байтах.
0
JIyrApy
32 / 32 / 1
Регистрация: 22.08.2010
Сообщений: 252
19.04.2013, 23:56  [ТС] #3
А тогда такой вопросы:
1) options.inSampleSize - обязательно должен равняться 1,2,4,8,16,32,... или любой целое число?
2)И как, кстати, можно пошагово прогонять код программы в эклипсе?

Добавлено через 5 минут
3)И если брать не round, а, например отбрасывание дробной части, Math.ceil(n)-1?
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
20.04.2013, 00:00 #4
Цитата Сообщение от JIyrApy Посмотреть сообщение
1) options.inSampleSize - обязательно должен равняться 1,2,4,8,16,32,... или любой целое число?
любой целое число насколько я знаю.

Цитата Сообщение от JIyrApy Посмотреть сообщение
И как, кстати, можно пошагово прогонять код программы в эклипсе?
слева от кнопки Старт есть кнопка Дебаг. Ну и брейкпоинты слева от кода ставятся двойным кликом.


Цитата Сообщение от JIyrApy Посмотреть сообщение
И если брать не round, а, например отбрасывание дробной части, Math.ceil(n)-1?
попробуйте.
1
c4sp3r
0x5B4C322291BD52AE
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
20.04.2013, 01:50 #5
JIyrApy,

Обрати внимание на методы calculateInSampleSize и decodeSampledBitmapFromResource
http://developer.android.com/trainin...-graphics.html
1
JIyrApy
32 / 32 / 1
Регистрация: 22.08.2010
Сообщений: 252
20.04.2013, 11:23  [ТС] #6
calculateInSampleSize - отлично) Блин, все гениальное - просто. А размер файла (в смысле "массу") можно регулировать дальнейшим compress для Bitmap-объекта (типа настройки прописать). Получается шикаааарно) Всем спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2013, 11:23
Привет! Вот еще темы с ответами:

Изменение размера картинок в зависимости от разрешения экрана - Программирование Android
Пишу приложение на Java для Android. Столкнулся с проблемой, что при использование шаблона xml для стандартных размеров экрана 480*800...

Изменение размера текста кнопки вместе с размером самой кнопки? - Программирование Android
Есть 100500 кнопок, нужно имитировать их нажатие. делаю это через селекторы и android:state_pressed но, текст таким образом не...

Конвертер - байты в биты - Программирование Android
Добрый вечер! Напишите пожалуйста формулу, по которой можно решить данное задание, вводя в edit1 число и по нажатию кнопки выводя...

Изменить байты файла - Программирование Android
Тяжело ли изменить выборочные байты в файле на Jave? До этого встречал лишь работу с текстовыми файлами через полное чтение строк в буфер...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
20.04.2013, 11:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru