Сохраните новое масштабированное изображение в PhotoLibrary

Я хотел бы, чтобы пользователь мог масштабировать изображение с помощью UIPinchGesture. Когда изображение масштабируется до желаемого размера, я хочу иметь возможность сохранить этот недавно масштабированный и фоновый UIView в формате .png с высоким разрешением в PhotoLibrary.

Вот мой код изображения масштаба и мой код сохранения:

//действие сенсорного масштаба изображения

@IBAction func scaleImage(_ sender: UIPinchGestureRecognizer) {

    myImageView.transform = CGAffineTransform(scaleX: sender.scale, y: sender.scale)
}

//функция сохранения изображения

@IBAction func saveArtwork(_ sender: AnyObject) {


    UIGraphicsBeginImageContext(self.myImageView.bounds.size)

    // The code below may solve your problem
    myImageView.layer.render(in: UIGraphicsGetCurrentContext()!)

    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    let activity = UIActivityViewController(activityItems: [image!], applicationActivities: nil)
    present(activity, animated: true, completion: nil)



}

Я делаю приложение, в котором вы можете масштабировать изображение и сохранять новый масштаб, оно может быть как большим, так и маленьким, как вам хотелось бы, если оно выходит за пределы, я хочу, чтобы оно обрезало то, что вне поля зрения. если это маленький масштаб, я бы хотел, чтобы фон был сохранен, чтобы вы могли видеть крошечное изображение на фоне редактирования. исходное изображение представляет собой квадратную фотографию из Instagram. это приложение, в котором я масштабирую изображение до очень маленького размера. я хотел бы, чтобы это выглядело именно так, с черным фоном, как новая фотография с тем же разрешением и соотношением сторон, что и экран. поэтому он будет выглядеть как черный портретный прямоугольник с новым масштабированным изображением.мое приложение сохраняет это изображение в библиотеку, оно имеет низкое разрешение, не масштабируется, а фон выглядит прозрачным и кажется белым. не то, что я хочу.

Результат, который я получаю сейчас, заключается в том, что изображение кажется масштабируемым, затем, когда я сохраняю его, оно центрируется и обрезается до границ изображения слева и справа.


person Margot Padilla    schedule 04.12.2017    source источник


Ответы (1)


АГА! Я получил это, я создал еще один Subview и сделал свой imageView дочерним элементом этого представления, а затем дал этому вновь созданному представлению выход и изменил код на это:

Функция @IBAction saveArtwork (_ отправитель: AnyObject) {

    UIGraphicsBeginImageContext(self.captureView.bounds.size)

    // The code below may solve your problem
    captureView.layer.render(in: UIGraphicsGetCurrentContext()!)

    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    let activity = UIActivityViewController(activityItems: [image!], applicationActivities: nil)
    present(activity, animated: true, completion: nil)
}

новый вид — captureView.

Теперь это работает, но выглядит как дерьмо. Это очень низкое разрешение. Я должен выяснить, как сделать этот снимок и сделать его разрешением устройства.

person Margot Padilla    schedule 08.12.2017