2015-07-30 2 views
1

Можно ли сохранить холст как изображение с более высоким разрешением, чем устройство? Есть ли способ масштабирования изображений с потерей плотности пикселей?
Я работаю над приложением, которое позволит вам рисовать и добавлять текст и изображения на холст. В настоящее время, когда я сохраняю холст в качестве изображения, разрешение этого изображения зависит от устройства. Я хочу, чтобы это не зависело от устройства, а также изображение должно быть сохранено с очень высоким разрешением (скажем, A3 300dpi).сохранение выходного изображения холста при более высоком разрешении, чем устройство

+1

да, при рисовании на Вашем устройстве используйте уменьшенную Canvas (canvas.scale (0.5f, 0.5f) например), и при рисовании на экспортированном изображении используйте неизменный холст, поэтому размер будет в два раза больше. – pskink

+0

Благодарим за предложение. Будет ли качество изображения в этом случае составлено? – Jayadev

+0

все зависит от того, что вы рисуете на холсте – pskink

ответ

1

Вы не можете быть независимым от устройства. Поскольку максимальный разрешенный размер отличается на каждом устройстве.

Взгляните на getMaximumBitmapWidth() и getMaximumBitmapHeight() в Canvas

Но вы можете рисовать в Bitmaps с Canvas. Но на это ответили несколько раз. Например, здесь: https://stackoverflow.com/a/5664047/5038873

Решение проблемы может заключаться в том, чтобы вырезать целевое разрешение на вспомогательных изображениях, ограниченных максимальным размером холста. Затем нарисуйте холст на этих изображениях.

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

+0

Спасибо :). Можно ли сохранить изображение в формате A3 300 dpi с устройства Android? – Jayadev

+0

Я думаю, что максимум, который я видел, был 16384x16384px на Nexus 6, а также на Galaxy S6. Но я не уверен на 100%. – FlanschiFox

+1

Оба Nexus 6 и s6 имеют разрешение 2560 x 1440 пикселей. – Jayadev

1

Невозможно сохранить холст как изображение с высоким разрешением. Разрешение изображения означает количество пикселей, образующих изображение. В холсте размер холста будет разрешением целевого изображения. Одним из возможных путей достижения этого

  • магазина все обращается пользователь элемент в качестве объектов
  • Создать пустой файл с целевым разрешением
  • Получить Canvas целевого изображения с Canvas с = новым холстом (изображение)
  • Рассчитать масштабный коэффициент по отношению к размеру холста вашего устройства и размер нового холста
  • Теперь масштабируйте все нарисованные пользователем объекты с вычисленным коэффициентом масштабирования
  • Перерисовать все объекты на больших ca nvas и экспорт изображений

Выше логики может быть выполнена один раз экспорта пользователь Нажмите кнопку/сохранить от UI

+0

Благодарим за помощь :) Не могли бы вы объяснить, как сохранить пользовательские элементы как отдельные объекты? – Jayadev

+1

Для пользователя добавлен текст, сохраните пользовательский объект со свойствами location x и y, размер текста. Преобразование местоположения x и y с масштабным коэффициентом и масштабным размером текста с коэффициентом масштабирования и рисованием текста на большом холсте с обновленными значениями –

Смежные вопросы