Зубчатые края на изображениях, отображаемых в Android - PullRequest
5 голосов
/ 10 января 2011

Я в настоящее время разрабатываю свое первое приложение для Android и у меня возникают некоторые проблемы при рендеринге изображений. Изображение само по себе отличного качества, но при его рендеринге качество резко снижается. Края становятся неровными, и это выглядит плохо. Все, кому я это показывал, почти сразу заметили это, без каких-либо подсказок. [начало слева, конец справа:]

http://i.stack.imgur.com/gld5A.png

Я пробую все, что знаю, и каждый совет, который мне удалось найти, просматривая информацию в Интернете, но, похоже, ничто не помогает.

В настоящее время я получаю изображение в виде растрового изображения и масштабирую его:

Bitmap holeImage = BitmapFactory.decodeResource(res, R.drawable.hole_image);
Bitmap holeImageBMP = Bitmap.createScaledBitmap(holeImage, width, height, true);

Получив изображение, я создаю Paint, устанавливаю несколько атрибутов сглаживания в true и затем рисую его на холсте:

Paint smoothingPaint = new Paint();
smoothingPaint.setAntiAlias(true);
smoothingPaint.setFilterBitmap(true);
smoothingPaint.setDither(true);
canvas.drawBitmap(holeImageBMP, 0, 0, smoothingPaint);

Тем не менее, как вы, очевидно, видите выше, качество изображения резко снижается. Я видел много красивых изображений, и я, честно говоря, просто не уверен, что происходит, поэтому любой совет был бы великолепен!

Другие примечания: я использую метод SurfaceView для обработки чертежа, который по своей природе аналогичен примеру LunarLander, приведенному в SDK.

Еще раз спасибо!

Ответы [ 2 ]

1 голос
/ 10 января 2011

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

Попробуйте прочитать эту замечательную статью об этой проблеме (и полосах, и размытии) и подумайте над адаптацией изображения, которое высоздан для того, чтобы он работал лучше на устройствах Android: http://www.curious -creature.org / 2010/12/08 / bitmap-quality-banding-and-dithering /

0 голосов
/ 10 января 2011

Если вы не ограничены намного меньшим количеством цветов, чем исходное изображение (есть ли в Android 256 цветовых режимов?), Я бы предложил отключить размывание , если вы увеличите изображение, действительно имеет видимый эффект, который, возможно, разрушает гладкий вид.

Я думаю, что в вашем случае сглаживание выводит сглаживание, уничтожая дополнительные цвета, которые необходимы сглаживанию для гладкого вида. Быстрый подсчет цветов на ваших фотографиях (слева около 850, справа около 140) подтверждает это.

...