Моему приложению необходимо прочитать файл JPEG с диска, обрезать его до известного региона и сохранить его под другим именем.Моя текущая реализация выглядит примерно так:
// open and crop the image
let image = CIImage(contentsOf: imagePath)
let cropRect = CGRect(x: 100, y: 100, width: 100, height: 100)
let croppedImage = image.cropped(to: cropRect)
// write to disk
let colorSpace = CGColorSpace(name: CGColorSpace.sRGB)
let context = CIContext()
context.writeJPEGRepresentation(of: croppedImage, to: destination, colorSpace: colorSpace, options: [kCGImageDestinationLossyCompressionQuality as CIImageRepresentationOption: 1])
Я обнаружил, что, хотя я уменьшаю размеры изображения, обрезая края, сохраненный файл в два раза больше оригинала.Я предполагаю, что это потому, что я пересэмплирую его, чтобы сохранить как новый JPEG.Я также заметил, что изображение немного отличается - возможно, менее резкое.Конечно, я могу настроить качество сжатия, чтобы уменьшить размер файла, но опять же это влияет на качество изображения.
Есть ли способ просто обрезать уже сжатый файл JPEG без увеличения размера файла или изменения какого-либодругих его характеристик?