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

时间:2018-10-16 12:04:04

标签: ios swift uiimage

我一直在尝试水平翻转UIImage图像,以便可以将其保存在我的相册中,并且一切正常,我可以将图像保存到相册中,但是该图像虽然看起来是翻转的我的应用程序未保存为翻页相册中的内容。我正在使用以下代码来翻转图像:

myImage?.withHorizontallyFlippedOrientation()

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

完整的IB操作代码:

@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 个答案:

答案 0 :(得分:3)

来自Apple的文档:

  

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

因此实际上并不会影响图像数据。

如果只想在图像的元数据中“翻转方向”,则可以使用CREATE TABLE #Output ( ColA VARCHAR (100), ColB VARCHAR (100), ColC VARCHAR (100), ColD VARCHAR (100), ColE VARCHAR (100) ) DECLARE @Counter INT SET @Counter = 1 WHILE @Counter < ( SELECT MAX (RowNumb) FROM #Sample ) BEGIN INSERT INTO #Output SELECT 'A1 Text', 'A2 Text', 'ZZ' + ColA + ColB, -- ZZ prefix + ColA + ColB 'ZZ' + ColC, 'ZZ' + ColE FROM #Sample SET @Counter = @Counter + 1 END SELECT * FROM #Output 然后保存图像(而不是将其转换为png数据并返回)。

如果您确实希望翻转图像数据(像素),则需要将其翻转绘制,然后保存该图像。一种方法:

.withHorizontallyFlippedOrientation()