将新缩放的图像保存到照片库

Posted

技术标签:

【中文标题】将新缩放的图像保存到照片库【英文标题】:Save newly scaled image to PhotoLibrary 【发布时间】:2017-12-04 23:41:42 【问题描述】:

我希望用户能够使用 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)




我正在制作一个应用程序,您可以在其中缩放图像并保存新的比例,如果超出范围,它可以任意大或小,我希望它可以裁剪视图之外的内容。如果它是按比例缩小的,我希望保存背景,以便您可以在编辑背景下看到小图像。 the original image is an instagram square photo. this is the app where i scale the image to be very small. i would like it to appear just this way with the black background as a new photo that is the same resolution and aspect ratio as the screen. so it will appear to be a black portrait rectangle with the new scaled image.my app saves this image to the library it is low resolution, unscaled and the background it looks to be transparent and appears white. not what i want.

我现在得到的结果是图像看起来是按比例缩放的,然后当我保存它时,它会居中并裁剪到左右两侧的图像视图边界。

【问题讨论】:

【参考方案1】:

啊哈!我明白了,我创建了另一个子视图,并使我的 imageView 成为该视图的子视图,然后为新创建的视图提供了一个插座并将代码更改为:

@IBAction func saveArtwork(_ sender: 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。

现在它可以工作了,但它看起来像废话。这是非常低的分辨率。我必须弄清楚如何拍摄这张快照并让它成为设备的分辨率。

【讨论】:

以上是关于将新缩放的图像保存到照片库的主要内容,如果未能解决你的问题,请参考以下文章

如何制作图像拼贴并将图像保存到照片库

获取保存到照片库的图像的 PHAsset/localIdentifier

如何快速将几张图像作为一张图像保存到照片库?

Cordova - 将图像从 url 保存到设备照片库中

如何将一些图像作为一个图像保存到swift中的照片库?

尝试将图像保存到照片库时,iOS 10 应用程序崩溃