Соотношение сторон изображений, отображаемых в 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) или обрезать изображение до соответствующего размера миниатюр ( документы).
Другие вопросы по тегам