如何水平翻转图像以将翻转的图像保存在相册中?

Posted

技术标签:

【中文标题】如何水平翻转图像以将翻转的图像保存在相册中?【英文标题】:How to flip image horizontally to save flipped in photo album? 【发布时间】:2018-10-16 12:04:04 【问题描述】:

我一直在尝试水平翻转UIImage 图像,以便将其保存在我的相册中,一切正常,我可以将图像保存到相册,但图像虽然在我的应用程序中出现翻转未在相册中另存为翻转。我正在使用以下代码来翻转图像:

myImage?.withHorizontallyFlippedOrientation()

注意:我不是要翻转UIImageView,而是要翻转图像并将其保存到一个新的图像变量中,并将该图像变量中的图像分配给UIImageView

完整的 IBA 操作代码:

@IBAction func horizontalFlipBtnPressed(_ sender: Any) 
    if myImageView.image != nil
    let image = myImageView.image
    tempImage.append((image?.withHorizontallyFlippedOrientation())!)

    myImageView.image = tempImage.last



    
    else
        print ("there is no image selected")
    

相册保存代码:

if myImageView.image != nil
        var image = myImageView.image
        let imageData = image!.pngData()
        let compressedImage = UIImage(data: imageData!)
        UIImageWriteToSavedPhotosAlbum(compressedImage!, nil, nil, nil)
        let alert = UIAlertController(title: "Saved", message: "Your image has been saved!", preferredStyle: .alert)
        let okAction = UIAlertAction(title: "Ok", style: .default, handler: nil)
        alert.addAction(okAction)
        self.present(alert, animated: true,completion: nil)

    

【问题讨论】:

你用什么代码保存图片? 我已经在上面添加了它的代码(编辑后)。 【参考方案1】:

来自 Apple 的文档:

图像方向会影响图像数据在绘制时的显示方式。

所以这实际上不会影响图像数据。

如果您只想在图像的元数据中“翻转方向”,您可以使用.withHorizontallyFlippedOrientation(),然后只保存图像(而不是将其转换为 png 数据并返回)。

如果您真的想要翻转图像数据(像素),您需要将其绘制翻转然后保存那个图像。一种方法:

func flipImageLeftRight(_ image: UIImage) -> UIImage? 

    UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale)
    let context = UIGraphicsGetCurrentContext()!
    context.translateBy(x: image.size.width, y: image.size.height)
    context.scaleBy(x: -image.scale, y: -image.scale)

    context.draw(image.cgImage!, in: CGRect(origin:CGPoint.zero, size: image.size))

    let newImage = UIGraphicsGetImageFromCurrentImageContext()

    UIGraphicsEndImageContext()

    return newImage

【讨论】:

以上是关于如何水平翻转图像以将翻转的图像保存在相册中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在wpf中翻转图像

使用PythonOpenCV翻转图像(水平垂直水平垂直翻转)

当您创建新相册以将图像保存到照片库时,有没有办法控制排序顺序?

IOS Swift 3:拍摄相机图片后水平翻转前置摄像头图像

如何在 konvajs 中翻转旋转的图像

Python水平翻转图像(Horizontally flip Image)