Я прошел обычный процесс постепенного обнаружения наилучшего решения для изменения размера изображения в iOS, и я закончил с ImageIO.
Хорошо работает следующее:
if let currentImage = CGImageSourceCreateWithData(imageData, nil)
//...some code that extracts the existing size, and based on my maximum expected horizontal size..calculates a new horizontal/vertical maximum size..
let options: CFDictionary = [kCGImageSourceThumbnailMaxPixelSize as NSString : maximumImageWidthOrHeight,
kCGImageSourceCreateThumbnailFromImageAlways as NSString : true]
CGImageSourceCreateThumbnailAtIndex(image, options)
но только для сбрасывания вниз.
Если у меня есть изображение с полным HD, т.е. 1920 x 1080, он изменяется (с сохранением пропорций), так что он вставляется в 320 пикселей в горизонтальном направлении, потому что это то, что я установил как максимальный горизонтальный размер.
Однако, если я передаю изображение размером 16 пикселей x 9 пикселей.. действительно маленькое (и, очевидно, соотношение сторон 16: 9). Это изображение не изменяется.
Я хочу, чтобы он был изменен до 320 x 180 пикселей.
Есть ли комбинация опций/пропущенного вызова метода/что-нибудь, что даст мне это в каркасе imageIO?