gpt4 book ai didi

ios - 为什么 UIImageWriteToSavedPhotosAlbum 在渲染后保存了一张红色图像?

转载 作者:行者123 更新时间:2023-11-28 07:55:55 27 4
gpt4 key购买 nike

我使用 GPUImage2( https://github.com/BradLarson/GPUImage2 ) 编写了代码。

我确认我的代码在触摸设置按钮(渲染过滤后的图像)之前成功保存了图像。

但是,我的代码在触摸设置按钮后保存了一个红色图像(相同大小,只有红色填充)。

我的应用程序。包括一个 RenderView IBOutlet 和两个 IBAction(设置按钮和保存按钮)。

这是我的完整源代码。

如何在点击设置按钮后成功保存图像?

import UIKit
import GPUImage

class ViewController: UIViewController {
var inputUIImage = UIImage(named: "testImage.png")
@IBOutlet weak var renderView: RenderView!
var pictureInput: PictureInput!
var filterColorInversion = ColorInversion()

@IBAction func setButtonDown(_ sender: UIButton) {
pictureInput = PictureInput(image: inputUIImage!)
pictureInput --> filterColorInversion --> renderView
pictureInput.processImage()
}

@objc func saveImageFailedCallback(_ image: UIImage, didFinishSavingWith error: NSError?, contextInfo context: UnsafeMutableRawPointer?) {
print("\(String(describing: error))")
}

@IBAction func saveButtonDown(_ sender: UIButton) {
let outputImage = inputUIImage!.filterWithOperation(filterColorInversion)
UIImageWriteToSavedPhotosAlbum(outputImage, self, #selector(saveImageFailedCallback(_:didFinishSavingWith:contextInfo:)), nil)
}

override func viewDidLoad() {
super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}

它表明我的代码在触摸设置按钮之前成功保存了图像(渲染过滤后的图像):

enter image description here

它表明我的代码在触摸设置按钮后成功呈现过滤后的图像: enter image description here

它表明我的代码无法在触摸设置按钮后保存过滤后的图像(但大小相同且仅填充红色):

enter image description here

最佳答案

我解决了这个问题!我添加了一个可选的 UIImage (tempImage),用于临时保存在内存中。当调用“saveButtonDown()”时,我检查 tempImage 是否为零。如果它是零,我只打印一条错误消息(无图像)。如果它不为零,则它必须已在“setButtonDown()”处初始化。这是我的完整源代码。谢谢。

import UIKit
import GPUImage

class ViewController: UIViewController {
var inputUIImage = UIImage(named: "testImage.png")
@IBOutlet weak var renderView: RenderView!
var pictureInput: PictureInput!
var filterColorInversion = ColorInversion()

var tempImage: UIImage?

@IBAction func setButtonDown(_ sender: UIButton) {
pictureInput = PictureInput(image: inputUIImage!)

tempImage = inputUIImage!.filterWithOperation(filterColorInversion)

pictureInput --> filterColorInversion --> renderView
pictureInput.processImage()
}

@objc func saveImageFailedCallback(_ image: UIImage, didFinishSavingWith error: NSError?, contextInfo context: UnsafeMutableRawPointer?) {
print("\(String(describing: error))")
}

@IBAction func saveButtonDown(_ sender: UIButton) {
if (tempImage != nil) {
UIImageWriteToSavedPhotosAlbum(tempImage!, self, #selector(saveImageFailedCallback(_:didFinishSavingWith:contextInfo:)), nil)
} else {
print("No Image")
}
}

override func viewDidLoad() {
super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}

关于ios - 为什么 UIImageWriteToSavedPhotosAlbum 在渲染后保存了一张红色图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48047871/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com