gpt4 book ai didi

ios - Imageview 图像未正确设置或过滤

转载 作者:行者123 更新时间:2023-11-30 11:44:31 25 4
gpt4 key购买 nike

我有一个 ImageView ,我通过使用相机或从图库设置其图像,然后使用 ciImage 添加过滤器。问题是,当我对该图像应用滤镜,然后将该图像设置回 imageview 时,它会在一段间隙后开始。我对 gab 没有问题,但它应该在两侧均等地保持原始图像方面。 filter on captured photo when opening captured image in Photos app黑色部分只是 imageview 的一部分(在调试 View 层次结构中检查)

captuingImageController(捕获图像并将图像发送到)->filterViewController(过滤并设置图像)

奇怪的是,这种情况并非发生在所有图像上,而仅发生在我使用此应用程序捕获的图像上。但如果我不过滤图像并直接完美地设置它。所以不明白问题出在哪里,是过滤还是捕获图像。PS:如果我用“照片”应用程序打开同一张图像,它看起来不错。

这是用于向图像添加滤镜的代码。

 override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.isHidden = true
self.selectedImageView.image = image

//------ if I comment out the below filtering part image lookes perfect but if i use image not center with scaleAspectFill.
self.selectedImageView.contentMode = .scaleAspectFit
guard let image = image, let cgimg = image.cgImage else {
print("imageView doesn't have an image!")
return
}
let coreImage = CIImage(cgImage: cgimg)
let filter = CIFilter(name: "CISepiaTone")
filter?.setValue(coreImage, forKey: kCIInputImageKey)
filter?.setValue(1, forKey: kCIInputIntensityKey)

if let output = filter?.value(forKey: kCIOutputImageKey) as? CIImage {
let filteredImage: UIImage = UIImage(ciImage: output)
selectedImageView?.image = filteredImage
UIImageWriteToSavedPhotosAlbum(filteredImage, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
self.selectedImageView.contentMode = UIViewContentMode.scaleAspectFill
} else {
print("image filtering failed")
}
// ------
}

捕获图像后的代码

public func photoOutput(_ captureOutput: AVCapturePhotoOutput, didFinishProcessingPhoto photoSampleBuffer: CMSampleBuffer?, previewPhoto previewPhotoSampleBuffer: CMSampleBuffer?,
resolvedSettings: AVCaptureResolvedPhotoSettings, bracketSettings: AVCaptureBracketedStillImageSettings?, error: Swift.Error?) {
if let error = error { self.photoCaptureCompletionBlock?(nil, error) }

else if let buffer = photoSampleBuffer, let data = AVCapturePhotoOutput.jpegPhotoDataRepresentation(forJPEGSampleBuffer: buffer, previewPhotoSampleBuffer: nil),
var image = UIImage(data: data) {
if currentCameraPosition == .front {
image = UIImage(cgImage: image.cgImage!, scale: image.scale, orientation: .leftMirrored)
}

self.photoCaptureCompletionBlock?(image, nil)
}

else {
self.photoCaptureCompletionBlock?(nil, CameraControllerError.unknown)
}
}

而且我还必须根据用户向左或向右滑动添加不同的过滤器,就像 instaarm 一样,还添加裁剪功能、正方形、矩形和比例以及许多很酷的东西,但首先这个演示的东西不能完美工作:-(如果你有任何正在做所有此类事情的教程或示例代码请分享链接,提前致谢

filter on old pic from gallery

最佳答案

在应用过滤器存储比例和方向时,仅缺少一行设置原始图像的比例和方向,然后在转换回 uiImage 时将其设置回来

let filteredImage  = UIImage(cgImage:filteredImageRef!, scale:imgScale!, orientation:imgOrientation!)

关于ios - Imageview 图像未正确设置或过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48978054/

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