Почему векторизованные PDF-изображения имеют свойство разрешения - PullRequest
0 голосов
/ 06 января 2020

Я немного запутался, почему векторизованное изображение имеет свойство разрешения? Разве это не должно быть векторизовано и дает какой-либо размер?

Хорошо, я сделал небольшой тест на XCode и напечатал ширину и высоту изображения в формате PDF. Я заметил, что его 3 умножено на разрешение. (Проверено на экране устройства 3x).

let imageRef = (imageView.image?.cgImage)!
let size = imageRef.bytesPerRow * imageRef.height
print(imageRef.width)
print(imageRef.height)

Как вы, возможно, знаете, во время компиляции Xcode генерирует изображения 1x, 2x и 3x из изображения PDF. Эти размеры изображения определяются Xcode в зависимости от разрешения изображения PDF. Что суммируется с результатами теста.

Могу ли я сделать вывод, что изображения в формате PDF должны иметь разрешение, равное его размеру в пикселях на шаблоне устройства 1x? Как насчет сгенерированных изображений, которые они будут пикселизировать?

Кроме того, PDF-файлы не должны иметь разрешение намного выше, чем требуемый размер 1x, иначе они могут иметь последствия для памяти. право

1 Ответ

1 голос
/ 07 января 2020

PDF - это вектор. В PDF все еще могут быть растровые элементы (например, встроенные изображения, а иногда и тени), и для таких изображений вы все равно должны использовать PNG. В противном случае вы правы в том, что когда Apple впервые добавила поддержку PDF в каталог ресурсов (iOS8), файлы PDF будут растеризованы во время компиляции. Оказывается, что это не всегда желательно, потому что иногда вы хотите иметь возможность использовать один и тот же векторный актив с разными точками (не только размерами пикселей) в одном приложении, поэтому они добавили опцию «сохранить векторные данные» ( iOS 11). Если вы отметите это, актив будет сохранен в формате PDF, а растеризация отложена до тех пор, пока вы его не попросите.

Итак, чтобы ответить на два вопроса:

  1. Ваш PDF-файл должен быть в * Требуемый размер 1006 * point (не размер в пикселях) (ie 1x), и система всегда будет масштабировать его в соответствии с масштабом экрана (ie 1x, 2x, 3x или, возможно, что-то еще в будущем) .
  2. Если вы используете «сохранить векторные данные», а в вашем pdf нет растровых элементов, тогда не должно иметь значения, какой размер точки находится на расстоянии памяти (размер вектора будет пропорционален сложности). кривых в PDF, а не его размер в пикселях). Однако после его растеризации он действительно будет занимать память, пропорциональную размеру растеризованного изображения.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...