Hel*_*miB 64 cocoa-touch core-graphics core-image uiimage ios5
我正试图CIImage从屏幕上显示的ImageView 获取.
UIImage *image = myImageView.image;
Run Code Online (Sandbox Code Playgroud)
将图像转换UIImage为CIImage.
CIImage *cImage = [....];
Run Code Online (Sandbox Code Playgroud)
这该怎么做?
cha*_*ngx 123
CIImage *ciImage = [UIImage imageNamed:@"test.png"].CIImage;
UIImage *uiImage = [[UIImage alloc] initWithCIImage:ciImage];
Run Code Online (Sandbox Code Playgroud)
要解决其中的情况下myUIImage.CIImage返回nil喜欢[UIImageView image],你可以改为做[CIImage imageWithCGImage:myUIImage.CGImage]-迪伦手
Swift版本:
let ciImage = UIImage(named: "test.png")!.ciImage
let uiImage = UIImage(ciImage: ciImage)
Run Code Online (Sandbox Code Playgroud)
小智 31
虽然Changxing Wang的答案是有效的,但Apple说UIImage.CIImage并不总是有效.具体来说,来自PocketCoreImage:
// Create a CIImage from the _inputImage. While UIImage has a property returning
// a CIImage representation of it, there are cases where it will not work. This is the
// most compatible route.
_filteredImage = [[CIImage alloc] initWithCGImage:_inputImage.CGImage options:nil];
Run Code Online (Sandbox Code Playgroud)
Apple也使用以下内容,但这对我不起作用:
[UIImage imageWithCIImage:_filteredImage]
Run Code Online (Sandbox Code Playgroud)
我的个人实现,改编自这篇文章对我有用:
// result is a CIImage, output of my filtering.
// returnImage is (obviously) a UIImage that I'm going to return.
CIContext *context = [CIContext contextWithOptions:nil];
UIImage *returnImage =
[UIImage imageWithCGImage:[context createCGImage:result fromRect:result.extent]];
Run Code Online (Sandbox Code Playgroud)
Jur*_*tas 21
这是最兼容的方式:
UIImage* u =[UIImage imageNamed:@"image.png"];
CIImage* ciimage = [[CIImage alloc] initWithCGImage:u.CGImage];
Run Code Online (Sandbox Code Playgroud)
现在使用ciimage ...
JVi*_*lla 13
这是我在项目中使用的完整代码示例.
- (UIImage *)makeUIImageFromCIImage:(CIImage *)ciImage {
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:ciImage fromRect:[ciImage extent]];
UIImage* uiImage = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
return uiImage;
}
Run Code Online (Sandbox Code Playgroud)
CIImage基本上是图像的配方.如果您尝试直接转换为CIImage,则会遇到问题UIImage.例如,打电话
NSData * UIImageJPEGRepresentation (
UIImage *image,
CGFloat compressionQuality
);
Run Code Online (Sandbox Code Playgroud)
会回来的nil.
Eta*_*tan 11
func toCIImage(image: UIImage) -> CIImage {
return image.CIImage ?? CIImage(CGImage: image.CGImage!)
}
func toUIImage(image: CIImage) -> UIImage {
return UIImage(CIImage: image)
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特 3/4
UIImage > CIImage
let ciimage = CIImage(image: image)
https://developer.apple.com/documentation/uikit/uiimage/1624090-init
CIImage > UIImage
let image = UIImage(ciImage: ciimage)
https://developer.apple.com/documentation/coreimage/ciimage/1624119-init
changx答案的Swift示例:
guard let ciimage = CIImage(image: uiimage) else { return }
let image = UIImage(CIImage: ciimage)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50987 次 |
| 最近记录: |