代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
ObjC
】
UIImage 图片处理 灰度 反色 深棕色
作者:
宝清
/ 发布于
2014/11/17
/
1012
+(UIImage*) grayscale:(UIImage*)anImage type:(char)type { CGImageRef imageRef; imageRef = anImage.CGImage; size_t width = CGImageGetWidth(imageRef); size_t height = CGImageGetHeight(imageRef); // ピクセルを構成するRGB各要素が何ビットで構成されている size_t bitsPerComponent; bitsPerComponent = CGImageGetBitsPerComponent(imageRef); // ピクセル全体は何ビットで構成されているか size_t bitsPerPixel; bitsPerPixel = CGImageGetBitsPerPixel(imageRef); // 画像の横1ライン分のデータが、何バイトで構成されているか size_t bytesPerRow; bytesPerRow = CGImageGetBytesPerRow(imageRef); // 画像の色空間 CGColorSpaceRef colorSpace; colorSpace = CGImageGetColorSpace(imageRef); // 画像のBitmap情報 CGBitmapInfo bitmapInfo; bitmapInfo = CGImageGetBitmapInfo(imageRef); // 画像がピクセル間の補完をしているか bool shouldInterpolate; shouldInterpolate = CGImageGetShouldInterpolate(imageRef); // 表示装置によって補正をしているか CGColorRenderingIntent intent; intent = CGImageGetRenderingIntent(imageRef); // 画像のデータプロバイダを取得する CGDataProviderRef dataProvider; dataProvider = CGImageGetDataProvider(imageRef); // データプロバイダから画像のbitmap生データ取得 CFDataRef data; UInt8* buffer; data = CGDataProviderCopyData(dataProvider); buffer = (UInt8*)CFDataGetBytePtr(data); // 1ピクセルずつ画像を処理 NSUInteger x, y; for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { UInt8* tmp; tmp = buffer + y * bytesPerRow + x * 4; // RGBAの4つ値をもっているので、1ピクセルごとに*4してずらす // RGB値を取得 UInt8 red,green,blue; red = *(tmp + 0); green = *(tmp + 1); blue = *(tmp + 2); UInt8 brightness; switch (type) { case 1://モノクロ // 輝度計算 brightness = (77 * red + 28 * green + 151 * blue) / 256; *(tmp + 0) = brightness; *(tmp + 1) = brightness; *(tmp + 2) = brightness; break; case 2://セピア *(tmp + 0) = red; *(tmp + 1) = green * 0.7; *(tmp + 2) = blue * 0.4; break; case 3://色反転 *(tmp + 0) = 255 - red; *(tmp + 1) = 255 - green; *(tmp + 2) = 255 - blue; break; default: *(tmp + 0) = red; *(tmp + 1) = green; *(tmp + 2) = blue; break; } } } // 効果を与えたデータ生成 CFDataRef effectedData; effectedData = CFDataCreate(NULL, buffer, CFDataGetLength(data)); // 効果を与えたデータプロバイダを生成 CGDataProviderRef effectedDataProvider; effectedDataProvider = CGDataProviderCreateWithCFData(effectedData); // 画像を生成 CGImageRef effectedCgImage; UIImage* effectedImage; effectedCgImage = CGImageCreate( width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpace, bitmapInfo, effectedDataProvider, NULL, shouldInterpolate, intent); effectedImage = [[UIImage alloc] initWithCGImage:effectedCgImage]; // データの解放 CGImageRelease(effectedCgImage); CFRelease(effectedDataProvider); CFRelease(effectedData); CFRelease(data); return effectedImage; }
试试其它关键字
UIImage
图片处理
灰度
反色
深棕色
同语言下
.
根据生日计算星座
.
精简的实现一个内存池
.
iOS索引搜索核心代码
.
iOS 搜索框
.
文件操作
.
UIWebView 加载本地网页
.
取消导航条对视图的影响
.
利用终端显示 隐藏文件
.
更改导航条背景颜色
.
iOS 字体斜体
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
宝清
贡献的其它代码
(
78
)
.
Java 获取Linux 的IP地址
.
FTP服务器上的文件上传、下载、删除操作
.
监听IE文档加载完成、弹窗、JS弹窗、页面跳转
.
防盗链
.
Hive 典型的中表内数据除重写法
.
判断一个时间段内有多少个周末
.
生成验证码
.
ServiceHelper-Windows服务辅助类
.
IE 6下修复PNG格式的透明度
.
居中对齐并设置固定宽度
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3