使用CoreImage教程

使用CoreImage教程

CoreImage包含有很多实用的滤镜,专业处理图片的库,为了能看到各种渲染效果,请使用如下图片素材.

 

现在可以开始教程了:


#define FIX_IMAGE(image)  fixImageWidth(image, 320.f)// 固定图片的宽度
UIImage * fixImageWidth(UIImage *image, CGFloat width)
{float newHeight = image.size.height * (width / image.size.width);CGSize size = CGSizeMake(width, newHeight);UIGraphicsBeginImageContextWithOptions(size, NO, 0);CGContextRef context = UIGraphicsGetCurrentContext();CGContextTranslateCTM(context, 0.0, size.height);CGContextScaleCTM(context, 1.0, -1.0);CGContextSetBlendMode(context, kCGBlendModeCopy);CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, size.width, size.height),image.CGImage);UIImage *imageOut = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();return imageOut;
}代码片段


// 将UIImage转换成CIImageCIImage *ciImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"1.jpg"]];// 创建滤镜CIFilter *filter = [CIFilter filterWithName:@"CIPhotoEffectMono"keysAndValues:kCIInputImageKey, ciImage, nil];[filter setDefaults];// 获取绘制上下文CIContext *context = [CIContext contextWithOptions:nil];// 渲染并输出CIImageCIImage *outputImage = [filter outputImage];// 创建CGImage句柄CGImageRef cgImage = [context createCGImage:outputImagefromRect:[outputImage extent]];// 获取图片UIImage *showImage = [UIImage imageWithCGImage:cgImage];// 释放CGImage句柄CGImageRelease(cgImage);// 显示图片UIImageView *imageView = \[[UIImageView alloc] initWithImage:FIX_IMAGE(showImage)];[self.view addSubview:imageView];代码片段

效果如下:

我们对操作进行简易的封装:

CIFilterEffect.h + CIFilterEffect.m

//
//  CIFilterEffect.h
//  CIFilter
//
//  Created by YouXianMing on 14-5-9.
//  Copyright (c) 2014年 Y.X. All rights reserved.
//#import <Foundation/Foundation.h>@interface CIFilterEffect : NSObject@property (nonatomic, strong, readonly) UIImage *result;- (instancetype)initWithImage:(UIImage *)image filterName:(NSString *)name;@end


//
//  CIFilterEffect.m
//  CIFilter
//
//  Created by YouXianMing on 14-5-9.
//  Copyright (c) 2014年 Y.X. All rights reserved.
//#import "CIFilterEffect.h"@interface CIFilterEffect ()@property (nonatomic, strong, readwrite) UIImage *result;@end@implementation CIFilterEffect- (instancetype)initWithImage:(UIImage *)image filterName:(NSString *)name
{self = [super init];if (self){// 将UIImage转换成CIImageCIImage *ciImage = [[CIImage alloc] initWithImage:image];// 创建滤镜CIFilter *filter = [CIFilter filterWithName:namekeysAndValues:kCIInputImageKey, ciImage, nil];[filter setDefaults];// 获取绘制上下文CIContext *context = [CIContext contextWithOptions:nil];// 渲染并输出CIImageCIImage *outputImage = [filter outputImage];// 创建CGImage句柄CGImageRef cgImage = [context createCGImage:outputImagefromRect:[outputImage extent]];_result = [UIImage imageWithCGImage:cgImage];// 释放CGImage句柄CGImageRelease(cgImage);}return self;
}@end

我们来开始尝试其他的滤镜效果,我们可以尝试的至少有这些:

@"CILinearToSRGBToneCurve",
@"CIPhotoEffectChrome",
@"CIPhotoEffectFade",
@"CIPhotoEffectInstant",
@"CIPhotoEffectMono",
@"CIPhotoEffectNoir",
@"CIPhotoEffectProcess",
@"CIPhotoEffectTonal",
@"CIPhotoEffectTransfer",
@"CISRGBToneCurveToLinear",
@"CIVignetteEffect",

下面是所有渲染出来的图片,与上面提供的滤镜名字一一对应:

 

以下效果是需要进行一些配置才能达到的效果,这个就不开源了,你懂得:).

 

 

福利:

Core Image Filter Reference

https://developer.apple.com/library/ios/documentation/graphicsimaging/reference/CoreImageFilterReference/Reference/reference.html

CICategoryBlur

  • CIBoxBlur
  • CIDiscBlur
  • CIGaussianBlur
  • CIMedianFilter
  • CIMotionBlur
  • CINoiseReduction
  • CIZoomBlur

CICategoryColorAdjustment

  • CIColorClamp
  • CIColorControls
  • CIColorMatrix
  • CIColorPolynomial
  • CIExposureAdjust
  • CIGammaAdjust
  • CIHueAdjust
  • CILinearToSRGBToneCurve
  • CISRGBToneCurveToLinear
  • CITemperatureAndTint
  • CIToneCurve
  • CIVibrance
  • CIWhitePointAdjust

CICategoryColorEffect(我们刚刚用到的一些效果在这里哦)

  • CIColorCrossPolynomial
  • CIColorCube
  • CIColorCubeWithColorSpace
  • CIColorInvert
  • CIColorMap
  • CIColorMonochrome
  • CIColorPosterize
  • CIFalseColor
  • CIMaskToAlpha
  • CIMaximumComponent
  • CIMinimumComponent
  • CIPhotoEffectChrome
  • CIPhotoEffectFade
  • CIPhotoEffectInstant
  • CIPhotoEffectMono
  • CIPhotoEffectNoir
  • CIPhotoEffectProcess
  • CIPhotoEffectTonal
  • CIPhotoEffectTransfer
  • CISepiaTone
  • CIVignette
  • CIVignetteEffect

CICategoryCompositeOperation

  • CIAdditionCompositing
  • CIColorBlendMode
  • CIColorBurnBlendMode
  • CIColorDodgeBlendMode
  • CIDarkenBlendMode
  • CIDifferenceBlendMode
  • CIExclusionBlendMode
  • CIHardLightBlendMode
  • CIHueBlendMode
  • CILightenBlendMode
  • CILuminosityBlendMode
  • CIMaximumCompositing
  • CIMinimumCompositing
  • CIMultiplyBlendMode
  • CIMultiplyCompositing
  • CIOverlayBlendMode
  • CISaturationBlendMode
  • CIScreenBlendMode
  • CISoftLightBlendMode
  • CISourceAtopCompositing
  • CISourceInCompositing
  • CISourceOutCompositing
  • CISourceOverCompositing

CICategoryDistortionEffect

  • CIBumpDistortion
  • CIBumpDistortionLinear
  • CICircleSplashDistortion
  • CICircularWrap
  • CIDroste
  • CIDisplacementDistortion
  • CIGlassDistortion
  • CIGlassLozenge
  • CIHoleDistortion
  • CILightTunnel
  • CIPinchDistortion
  • CIStretchCrop
  • CITorusLensDistortion
  • CITwirlDistortion
  • CIVortexDistortion

CICategoryGenerator

  • CICheckerboardGenerator
  • CIConstantColorGenerator
  • CILenticularHaloGenerator
  • CIQRCodeGenerator
  • CIRandomGenerator
  • CIStarShineGenerator
  • CIStripesGenerator
  • CISunbeamsGenerator

CICategoryGeometryAdjustment

  • CIAffineTransform
  • CICrop
  • CILanczosScaleTransform
  • CIPerspectiveTransform
  • CIPerspectiveTransformWithExtent
  • CIStraightenFilter

CICategoryGradient

  • CIGaussianGradient
  • CILinearGradient
  • CIRadialGradient
  • CISmoothLinearGradient

CICategoryHalftoneEffect

  • CICircularScreen
  • CICMYKHalftone
  • CIDotScreen
  • CIHatchedScreen
  • CILineScreen

CICategoryReduction

  • CIAreaAverage
  • CIAreaHistogram
  • CIRowAverage
  • CIColumnAverage
  • CIHistogramDisplayFilter
  • CIAreaMaximum
  • CIAreaMinimum
  • CIAreaMaximumAlpha
  • CIAreaMinimumAlpha

CICategorySharpen

  • CISharpenLuminance
  • CIUnsharpMask

CICategoryStylize

  • CIBlendWithAlphaMask
  • CIBlendWithMask
  • CIBloom
  • CIComicEffect
  • CIConvolution3X3
  • CIConvolution5X5
  • CIConvolution7X7
  • CIConvolution9Horizontal
  • CIConvolution9Vertical
  • CICrystallize
  • CIDepthOfField
  • CIEdges
  • CIEdgeWork
  • CIGloom
  • CIHeightFieldFromMask
  • CIHexagonalPixellate
  • CIHighlightShadowAdjust
  • CILineOverlay
  • CIPixellate
  • CIPointillize
  • CIShadedMaterial
  • CISpotColor
  • CISpotLight

CICategoryTileEffect

  • CIAffineClamp
  • CIAffineTile
  • CIEightfoldReflectedTile
  • CIFourfoldReflectedTile
  • CIFourfoldRotatedTile
  • CIFourfoldTranslatedTile
  • CIGlideReflectedTile
  • CIKaleidoscope
  • CIOpTile
  • CIParallelogramTile
  • CIPerspectiveTile
  • CISixfoldReflectedTile
  • CISixfoldRotatedTile
  • CITriangleKaleidoscope
  • CITriangleTile
  • CITwelvefoldReflectedTile

CICategoryTransition

  • CIBarsSwipeTransition
  • CICopyMachineTransition
  • CIDisintegrateWithMaskTransition
  • CIDissolveTransition
  • CIFlashTransition
  • CIModTransition
  • CIPageCurlTransition
  • CIPageCurlWithShadowTransition
  • CIRippleTransition
  • CISwipeTransition

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑生成siri语音_米家智能台灯1S全新升级,支持小爱和Siri的语音控制

夜晚的灯光是我们最为需要的东西&#xff0c;但很多时候&#xff0c;我们需要灯照在不同的地方&#xff0c;平时我只靠吸顶灯的光来照亮家里的每一个角落&#xff0c;甚至是看书的时候都只靠吸顶灯照明。台灯作为占用面积小&#xff0c;光照均匀&#xff0c;让很多的人越来越依…

linux vnc检查,检查Ubuntu VNC设置(避免远程登陆)

(1)安装x11vncsudo apt-get install x11vnc(2)将x11vnc加入xinetdsudo gedit /etc/xinetd.d/x11vnc加入下面这段service x11vnc{ port 5900 type UNLISTED socket_type stream protocol tcp wait …

JavaScript网络地址作为参数_JavaScript之bind的模拟实现

阅读本文约需要5分钟大家好&#xff0c;我是你们的导师&#xff0c;我每天都会给大家分享一些干货内容(当然了&#xff0c;周末也要允许老师休息一下哈)。昨天给大家分享了JavaScript的call和apply的模拟实现&#xff0c;今天给大家分享一下bind的模拟实现。什么是bind&#xf…

cdh集群linux命令,CDH集群中,服务器启动spark2-shell命令行注意事项

1、环境cdh5.12.3spark2 2.3.02、需要本地地洞spark2-shell用于环境测试错误一&#xff1a;Error: A JNI error has occurred, please check your installation and try againException in thread "main" java.lang.NoClassDefFoundError: org/slf4j/Loggerat java.l…

python语音转文字软件_python编写语音转文字软件|语音转文字工具免费版下载(语音批量转换文字) v2.0 最新版_数码资源网...

没有专业的工具怎么能够将语音转换为文字呢&#xff1f;小编为大家提供了语音转文字工具免费版&#xff0c;一款通过Python编写语音转文字软件。用户通过使用语音转文字工具免费版&#xff0c;可以将语音批量转换文字&#xff0c;而且操作也是非常的简单&#xff0c;如果你需要…

Spring-bean作用域scope详解

2019独角兽企业重金招聘Python工程师标准>>> 默认情况下&#xff0c;从bean工厂所取得的实例为Singleton&#xff08;bean的singleton属性&#xff09; Singleton: Spring容器只存在一个共享的bean实例&#xff0c;是默认的配置。 Prototype: 每次对bean的请求都会创…

c语言怎么写星星代码,C语言打印星星的问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include int main(void){int index, up, lines;printf("请输入将要显示的行数:\n");while(scanf("%d", &up) 1){if(up % 2 0){for(lines 1; lines < up / 2; lines){for(index 0; index …

c语言计算机猜数字100以内,求一个猜数字C语言代码,要求如下 计算机生成一个100以内的随机数,玩家来猜 记录猜的次数,最后打...

满意答案itpotato推荐于 2017.10.09采纳率&#xff1a;51% 等级&#xff1a;12已帮助&#xff1a;4600人/**百度知道越来越水了&#xff0c;这么简单的题就一个回答*没见过限定头文件数目的。。而且是限定至少。。。。*/#include#include#include#includeint getrand(){sran…

fakeapp2.2.0下载_软件下载 | SuperCuger 测量平差系统 V1.0

SuperCuger测量平差系统 version 1.0 是一款基于测绘工程中边角网、测角网、测边网、水准网测量数据的免费开源的可视化平差系统。可用于测绘工程中测量平差计算和平差结果报告生成&#xff0c;和插件(中间件)模式扩展新的平差功能。我们的软件具备平差数据可视化&#xff0c;便…

c语言cin输入数组,C++基础:各种输入方法总结cin.get()、

原标题&#xff1a;C基础&#xff1a;各种输入方法总结cin.get()、在C中&#xff0c;各种输入方法还是不少的&#xff0c;而且各有所异&#xff0c;本文做一点简要总结&#xff0c;主要涉及如下内容&#xff1a;cin、cin.get()、cin.getline()、getline()、gets()、getchar()。…

手机怎么能把书签导出来_成人高考能在手机上报名吗?成人高考怎么缴费?

很多成人高考的考生在报名考试的时候想用手机进行报名&#xff0c;但是听说都是使用电脑报名&#xff0c;所以不知道手机报名行不行&#xff0c;另外还有很多考生也不知道如何缴费。那么成人高考能在手机上报名吗?成人高考怎么缴费?下面小编就来和大家聊一聊成人高考手机报名…

thinkphp单入口和多入口的访问方法

完全是参考thinkphp的官网资料 现在, 基本上都是 用 单入口 的方式来做的! thinkphp可创建多入口和单入口两种模式&#xff0c;本文主要讲解创建方法和两者的区别。 TP版本&#xff1a;3.1.3 前端&#xff1a;Home&#xff0c;后台&#xff1a;Admin 一. 创建方法 单入口&#…

财务模块的一些基础概念

财务会计承担着企业总体信息管理和传递的职能&#xff0c;无论企业采用何种运营模式、经营何种业务&#xff0c;都离不开财务的支持&#xff0c;大多数运营和管理流程均与财务存在着接口&#xff0c;为此&#xff0c;优化、高效的财务运作模式和流程成为确保企业良性发展和业务…

if mybatis tk 多个_面试题:mybatis 中的 DAO 接口和 XML 文件里的 SQL 是如何建立关系的?...

前言这是 mybatis 比较常问到的面试题&#xff0c;我自己在以前的面试过程中被问到了2次&#xff0c;2次都是非常重要的面试环节&#xff0c;因此自己印象很深刻。这个题目我很早就深入学习了&#xff0c;但是一直没有整理出来&#xff0c;刚好最近一段时间由于工作太忙&#x…

多机器使用setnx 设置同一个key_Redisson分布式锁的简单使用

做一个积极的人编码、改bug、提升自己我有一个乐园&#xff0c;面向编程&#xff0c;春暖花开&#xff01;一&#xff1a;前言我在实际环境中遇到了这样一种问题&#xff0c;分布式生成id的问题&#xff01;因为业务逻辑的问题&#xff0c;我有个生成id的方法&#xff0c;是根据…

孟德尔随机化周报 (12.14)

欢迎报名2023年郑老师团队课程&#xff01; 郑老师科研统计培训&#xff0c;包括临床数据、公共数据分析课程等&#xff0c;欢迎报名 孟德尔随机化,Mendilian Randomization&#xff0c;简写为MR&#xff0c;是一种在流行病学领域应用广泛的一种实验设计方法&#xff0c;利用公…

android计算器弹窗,android实现简易计算器

本文实例为大家分享了android实现简易计算器展示的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下效果图&#xff1a;一、如图&#xff0c;首先布局计算器主页显示activity_main.xmlxmlns:tools"http://schemas.android.com/tools"android:layout_width&qu…

多选取值_机制砂如何控制MB值和石粉含量

随着环保政策的加强和河沙采挖禁令的收紧&#xff0c;机制砂逐渐成为建筑用砂的主流。但很多砂石厂生产设备落后、生产条件简陋、生产工艺不完善导致生产的机制砂品质低&#xff0c;质量不能满足高等级混凝土的要求。不仅卖不上价格&#xff0c;还浪费了矿石资源&#xff0c;挣…

python爬虫哪个选择器好用_Python网络爬虫四大选择器用法原理总结

前几天小编连续写了四篇关于Python选择器的文章&#xff0c;分别用正则表达式、BeautifulSoup、Xpath、CSS选择器分别抓取京东网的商品信息。今天小编来给大家总结一下这四个选择器&#xff0c;让大家更加深刻的理解和熟悉Python选择器。 一、正则表达式 正则表达式为我们提供了…

eclipse配置python开发环境_eclipse怎样搭建Python开发环境

eclipse通过pydev插件也是可以搭建出Python开发环境的。今天小编我就来给大家分享一下eclipse怎样搭建Python开发环境的经验哦。 工具/原料 电脑 eclipse Python pydev插件链接&#xff1a;https://pan.baidu.com/s/1VIK5H_ZbC6DsOlNwy2OwLw 密码&#xff1a;kg8a 方法/步骤 1 …