2016-04-01 2 views
0

Я работаю над приложением Android + iOS, где нам нужны некоторые изображения. Я хочу, чтобы изображения имели «осязаемый» размер, например, 15 мм на всех устройствах. Для устройств с большими экранами я хочу разместить больше изображений, а не увеличивать изображение.Почему разные размеры изображений для разных ковшей плотности, если Android/iOS масштабирует их?

Моя проблема Как выбрать разрешение (в пикселях) для изображений.

, чтобы изображения 15 мм на всех устройствах есть две стратегии:

  1. изображения Поставка в различных разрешениях и выберите ближайший соответствующий
  2. масштабировать их так, чтобы они соответствовали

A pro с первой стратегией заключается в том, что это единственный способ получить пиксельные изображения. Но есть и недостатки:

В Android есть разные «плотные ведра»: ldpi, hdpi, mdpi, xhdpi и т. Д. Различные устройства относятся к разным ковшим плотности. Но точная плотность может сильно различаться. Поэтому, если я решаю первую стратегию и поставляю изображение с правильными размерами для xhdpi (320 точек на дюйм), устройство с 350 или 300 т/д может все еще принадлежать этому ковту плотности, и результирующее изображение будет отличаться по размеру.

Из-за этого я думаю, что вторая стратегия, масштабируйте изображения так, чтобы они соответствовали, лучше. Но тогда мне интересно, почему я должен предоставлять изображения в разных разрешениях? И что такое «оптимальное разрешение» (с учетом требования размера в мм) для каждого ведра плотности?

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

Почему у всех плотных ковшей нет изображений размером 1024x1024? И, учитывая, что оригиналы одинаковы, почему мне даже приходится поставлять разные изображения для разных ведер плотности?

+0

Вам нужно будет перемасштабировать изображение на Android, если хотите, чтобы оно было точным на 15 мм. Но этот вопрос на самом деле просто «почему они не упрощают мою работу, а не труднее, поэтому я должен предоставить больше изображений», верно? Ответ на вопрос «Почему не все плотные ведра имеют изображения одинакового размера» - это просто ** соотношение сторон **. – Shark

+0

извините, но о чем вы говорите в мире? соотношение сторон, как в высоте по ширине? не может видеть, что он имеет какое-либо отношение к ведрам плотности. Я отправил вопрос, потому что я хочу понять философию: у меня нет проблем с написанием сценария, который поставляет мои изображения в сотню различных разрешений в любых каталогах и схемах именования. но мне не нравится делать что-то, не понимая причин, лежащих в его основе, даже если это просто исторические причины или что-то еще. – Jonatan

+0

Очень полезный вопрос. Спасибо. – stevehs17

ответ

1

Так что, если я решаю первую стратегию и поставляю изображение в правильных размерах для xhdpi (320 точек на дюйм), устройство с 350 или 300 т/д может все еще принадлежать этому ковту плотности, и результирующее изображение будет отличаться по размеру.

Только если вы установите ImageView (или любой другой виджет использует изображение), чтобы иметь размеры на основе wrap_content. Если вы установите размер виджета на основе других измерений (например, 15mm), тогда Android выберет изображение на основе плотности, а затем масштабирует, чтобы исправить указанные размеры.

Почему я должен предоставлять изображения в разных разрешениях?

Качество. Явное качество изображения уменьшает масштаб изображения. Это особенно верно для масштабирования изображения, хотя вы также столкнетесь с проблемами масштабирования.

Кроме того, особенно на устройствах Android 1.x/2.x этот вид масштабирования был выполнен с использованием памяти приложения (кучного пространства); избегая такого рода масштабирования, было бы полезно использовать память.AFAIK, на современных устройствах это масштабирование выполняется на графическом процессоре, что несколько помогает. Однако в целом вы хотите использовать максимально возможное растровое изображение как входной сигнал, который даст вам визуальный результат, соответствующий вашим потребностям и ожиданиям пользователей. Вот почему мы используем растровые изображения с низким разрешением для устройств с более низкой плотностью. — масштабирование вниз гарантировано для удаления ОЗУ, и не у всех пользователей есть высокопроизводительные устройства с большим количеством ОЗУ.

А что такое «оптимальное разрешение» (с учетом требования размера в мм) для каждого ведра плотности?

Плотность выражается точками или пикселями на дюйм. Преобразуйте значение mm в дюймы, затем умножьте на плотность, чтобы получить значение в пикселях.

Почему не все плотные ведра имеют изображения размером 1024x1024, например?

Вы абсолютно можете это сделать, если каким-то образом это даст вам результаты, которые вы хотите, и это не тратит места на диске или пустое пространство для пользователя.

+0

Спасибо! Если я правильно вас понимаю, тогда это в основном для экономии RAM/CPU-циклов и дискового пространства. Тем не менее, если бы я мог сделать с одним изображением в 1024x1024 вместо того и того, и на 256x256, я бы сэкономил дисковое пространство (но не RAM/CPU-циклы). Я не согласен с тем, что предоставление изображения с более низким разрешением приведет к лучшему качеству при уменьшении до меньшего изображения, чем более крупный оригинал, если это то, что вы говорите в параграфе «качество»? – Jonatan

+0

Что касается «оптимального разрешения»: вы говорите, умножаясь на плотность «а», и я думаю, что это та плотность, о которой я не уверен. Поскольку необходимо всегда избегать масштабирования, я предполагаю, что следует использовать плотность выше, чем максимальный dpi существующего устройства в данном ковше плотности. – Jonatan

+0

@ Джонатан: «Я не согласен ...» - это зависит от произведение искусства. Изобразительное изображение, которое может выглядеть отлично немасштабированным при высокой плотности, может стать размытым при уменьшении масштаба до более низкой плотности. «Я предполагаю, что это ту плотность, о которой я не уверен» - по одному для каждого каталога ресурсов, который вы поддерживаете (например, 'res/drawable-ldpi /' - 120dpi, 'res/drawable-mdpi /' - 160dpi и т. Д.). , Обычно мы не отправляем чертежи в * каждую * плотность, но достаточно, чтобы мы получили хорошие результаты и были разумными для потребления кучи. Однако «хорошие результаты» полностью зависят от художественных работ. – CommonsWare