С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
haribo
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
1

Bitmap, resize

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

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

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

Bitmap трансформация
Здрасте) Как можно трансформировать bitmap? Т.е. у меня есть картинка,...

создание Bitmap
столкнулся с такой проблемой: есть в drawable imge.jpg , делаю в классе ...

RelativeLayout и Bitmap
Можно ли поставить на задний фон RelativeLayout Bitmap. Или преобразовать...

Отличия drawable от Bitmap
Чем отличается drawable от Bitmap?

4
verylazy
Заблокирован
24.09.2013, 09:32 2
ресайз это кроп или масштабирование?
если масштабирование то можно так bitmap = Bitmap.createBitmap(source, x, y, width, height);
но мне кажется, что все таки нужен был кроп
0
haribo
41 / 41 / 0
Регистрация: 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 / 0
Регистрация: 26.05.2013
Сообщений: 160
24.09.2013, 10:40  [ТС] 5
Приведенный код выше масштабирует изображение не касаясь изображения напрямую всякими грязными фильтрами, я не думаю что дополнительные декодирования изображения будут давать лучшее качество.
0
24.09.2013, 10:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2013, 10:40

Неверный размер Bitmap'a
Всем привет! Загружаю картинку размером 1920х1080: bmp =...

Bitmap & BitmapFactory
Вопрос к бывалым. У меня в метод передается параметр Byte data и дальше я из...

Сохранение Bitmap в галерею
Сохраняю картинку так: void saveImageToGallery(Bitmap bmp){ try { ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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