Соотношение сторон изображений, отображаемых в UserNotification, относительно того, как изображения хранятся в базе данных
Я использую новую платформу UserNotifications, чтобы включить вложения изображений в уведомления для моего приложения iOS. Я извлекаю изображения из разных баз данных, например из Facebook, а также из своей собственной базы данных Firebase.
У меня есть пара вопросов.
Во-первых, если изображение уведомления отображается из моей базы данных Firebase, а высота больше, чем ширина, а также высота превышает максимальную высоту изображения для уведомления (я не уверен конкретно, что это такое), изображение сжимается по вертикали и соотношение сторон неверно. Обратите внимание, что одни и те же изображения правильно представлены в моем приложении.
Во-вторых, если изображение уведомления отображается из базы данных Facebook, а высота превышает ширину, а также высота превышает максимальную высоту изображения для уведомления, все изображение будет изменено в соответствии с максимально допустимой высотой для изображения уведомления, оставляя белые вертикальные полосы с обеих сторон.
Я хотел бы убедиться, что изображения, которые я сохраняю для FireBase, никогда не будут представлены с искаженным соотношением сторон. И для изображений, которые превышают максимально допустимую высоту, я хотел бы обрезать эти изображения, чтобы избежать белых полос с обеих сторон.
Также стоит отметить, что для изображений, которые я храню в базе данных Firebase, я получаю одинаковое поведение, независимо от того, была ли фотография сделана моим приложением или сделана в собственном приложении камеры iOS и загружена позднее, что приводит к убеждению, что проблема заключается в отношение к тому, как изображения хранятся в базе данных, в отличие от того, как изображения захватываются и включают ли они соответствующие метаданные.
Код, связанный с Firebase, который я использую для хранения изображений:
if let uploadData = UIImageJPEGRepresentation(imageToStore, 0.1) {
imageStorageRef.put(uploadData, metadata: nil, completion: { (metadata, error) in
…
1 ответ
Несколько мыслей:
- Я бы
curl -v
Оба URL-адреса и сравнить заголовки, может быть, есть очевидное решение в том, что изображение Facebook имеет заголовок, который нужно добавить к изображениям, которые вы храните в Firebase Storage. - Facebook также может изменять размер изображения на лету (запрашивая изображение соответствующей высоты / ширины), используя технологию, аналогичную Imgix/Cloudinary. Вы можете относительно легко интегрировать одного из этих провайдеров.
- Возможно, вам понадобится добавить дополнительную логику в код миниатюры уведомлений, чтобы изменить размер изображения ( публикация NSHipster) или обрезать изображение до соответствующего размера миниатюр ( документы).