Как обрезать изображение в формате JPEG с / на URL, Swift, MacOS - PullRequest
0 голосов
/ 23 апреля 2019

Я хочу сделать прямоугольную обрезку изображения JPEG.У меня есть следующий код, который создаст дубликат изображения.Он использует NSImage.Я не знаю, как создать обрезанное изображение.

   func crop(index: Int)  {
        let croppedImageUrl = ...
        let imageUrl = ...

        // Create a cropped image.
        let data = try? Data(contentsOf: imageUrl)
        let image = NSImage(data: data!)
        let tiffRepresentation = (image?.tiffRepresentation)!
        let bitmap = NSBitmapImageRep(data: tiffRepresentation)
        let representation = bitmap?.representation(using: NSBitmapImageRep.FileType.jpeg, properties: [:])
        do {
            try representation?.write(to: croppedImageUrl, options: [.withoutOverwriting])
        } catch let error as NSError {
            print(error.localizedDescription)
        }
    }

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Что-то вроде ...

func crop(nsImage: NSImage,rect: CGRect) -> NSImage {  
    let cgImage = (nsImage?.cgImage(forProposedRect: nil, context: nil, hints: nil)?.cropping(to: rect))!

    let size = NSSize(width: rect.width, height: rect.height)
    return NSImage(cgImage: cgImage, size: size)
}

Извините, не скомпилировал этот фрагмент кода, но общий метод работал в моем коде.Возможно, лучше это сделать как расширение NSImage, если это возможно.

0 голосов
/ 23 апреля 2019

Это может помочь вам обрезать изображение

func crop() -> UIImage? {
    let imageUrl = URL(string: "imageUrl")!
    let data = try! Data(contentsOf: imageUrl)
    let image = UIImage(data: data)!

    // Crop rectangle
    let width = min(image.size.width, image.size.height)
    let size = CGSize(width: width, height: width)

    // If you want to crop center of image
    let startPoint = CGPoint(x: (image.size.width - width) / 2, y: (image.size.height - width) / 2)

    UIGraphicsBeginImageContextWithOptions(size, false, 0)

    image.draw(in: CGRect(origin: startPoint, size: size))

    let croppedImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return croppedImage
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...