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

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

Войти
Регистрация
Восстановить пароль
 
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
#1

Bitmap, resize - Программирование Android

24.09.2013, 01:10. Просмотров 1028. Ответов 4
Метки нет (Все метки)

При ресайзе bitmap теряет "резкость" по контуру изображения, появляется пикселизация. Есть способы обойти это?
Ресайзю bitmap путем изменения координат rect'a.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2013, 01:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Bitmap, resize (Программирование Android):

Для чего делать Resize при использовании Picasso - Программирование Android
Почему нужно иногда использовать resize() когда загружаешь изображения при помощи Picasso? Почему без этого иногда происходят утечки...

Bitmap трансформация - Программирование Android
Здрасте) Как можно трансформировать bitmap? Т.е. у меня есть картинка, которую я загружаю, и мне её надо сжать один край, из...

создание Bitmap - Программирование Android
столкнулся с такой проблемой: есть в drawable imge.jpg , делаю в классе class MClass extends View Bitmap bm1 =...

RelativeLayout и Bitmap - Программирование Android
Можно ли поставить на задний фон RelativeLayout Bitmap. Или преобразовать Bitmap в Drawable? P.S. Именно Bitmap, а не BitmapDrawable/

Отличия drawable от Bitmap - Программирование Android
Чем отличается drawable от Bitmap?

Очистка памяти Bitmap - Программирование Android
В фрагменте динамически создаются ImageView, после закрытия фрагмента они все исчезают, нужно ли в коде всякие recycle делать чтобы...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
verylazy
Заблокирован
24.09.2013, 09:32 #2
ресайз это кроп или масштабирование?
если масштабирование то можно так bitmap = Bitmap.createBitmap(source, x, y, width, height);
но мне кажется, что все таки нужен был кроп
0
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
24.09.2013, 09:50  [ТС] #3
кастомное вью, наследуется от imageview, его ресайзю по пинчу. ресайзю следующим образом:


mScaledImageWidth и mScaledImageHeight получаю следующим образом:
Java
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
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int positionX = (int) event.getRawX();
        int positionY = (int) event.getRawY();
 
        switch (event.getAction() & MotionEvent.ACTION_MASK) {
             // many code
            case MotionEvent.ACTION_POINTER_DOWN:
                movingDist = spacing(event);
                if (movingDist > stdDist) {
                    MODE = ZOOM;
                }
                break;
            case MotionEvent.ACTION_MOVE:
               if (MODE == ZOOM) {
                  float newMovingDist = spacing(event);
                  if (newMovingDist > stdDist) {
                       mScaledImageHeight = (int) (newMovingDist / movingDist * mImageHeight);
                       mScaledImageWidth = (int) (newMovingDist / movingDist * mImageWidth);
 
                       scaleImage();
                  }
         }
 
        mImagePosition = new Rect(startXPosition, startYPosition, mImageWidth, mImageHeight); // на начальном этапе
 
       public void scaleImage() {
            if (mScaledImageWidth == 0 && mScaledImageHeight == 0) {
                mImagePosition.right = mImagePosition.left + mImageWidth;
                mImagePosition.bottom = mImagePosition.top + mImageHeight;
            } else {
                mImagePosition.right = mImagePosition.left + mScaledImageWidth;
                mImagePosition.bottom = mImagePosition.top + mScaledImageHeight;
            }
            mImageRegion.set(mImagePosition);
        }
0
verylazy
Заблокирован
24.09.2013, 10:07 #4
только что проверил, картинка масштабируется
Java
1
2
3
4
ImageView arni = (ImageView) findViewById(R.id.imageView1);
Bitmap bitmap = ((BitmapDrawable) arni.getDrawable()).getBitmap();
bitmap = Bitmap.createScaledBitmap(bitmap, 500, 200, false);
arni.setImageBitmap(bitmap);
можно ведь брать размеры и подставлять вместо чисел, как у меня
мне кажется неважным что там от чего наследуется, масштабируется ведь bitmap
я конечно новичек и часто сильно буксую (как и сейчас?), но ведь не проблема в твой метод вставить строки что я выше привел, с переделкой естественно

хотя, я тут подумал....правильно было бы, наверное, все эти масштабирования проводить над оригинальной картинкой и результат сохранять отдельно, иначе после пары изменений размеров будет импрессионизм на битмапе
0
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
24.09.2013, 10:40  [ТС] #5
Приведенный код выше масштабирует изображение не касаясь изображения напрямую всякими грязными фильтрами, я не думаю что дополнительные декодирования изображения будут давать лучшее качество.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2013, 10:40
Привет! Вот еще темы с ответами:

Сохранение Bitmap в галерею - Программирование Android
Сохраняю картинку так: void saveImageToGallery(Bitmap bmp){ try { File dest = new...

Неверный размер Bitmap'a - Программирование Android
Всем привет! Загружаю картинку размером 1920х1080: bmp = BitmapFactory.decodeResource(getResources(), R.drawable.bmp); Затем вывожу...

Bitmap & BitmapFactory - Программирование Android
Вопрос к бывалым. У меня в метод передается параметр Byte data и дальше я из этого массива байт пытаюсь сделать битмап bitmap =...

Bitmap отразить по горизонтали - Программирование Android
Bitmap giv1=BitmapFactory.decodeResource(getContext().getResources(),R.drawable.sobaka); ???


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

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

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