iOS图像处理-(jpg去除白色背景)

Colin丶 2014-11-15 06:43:03
散散分, 顺便问个问题。

对图像处理部分不了解,请问有没有办法把一张图片(.jpg)的白色背景抠掉,转成.png 格式的有alpha通道的透明图。
原图黑白分明, 像这样

转换成这样


希望懂的帮帮忙。

多谢。
...全文
5279 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
a10778254 2017-04-05
  • 打赏
  • 举报
回复
引用 33 楼 ender129 的回复:
楼主 能把你解决的代码发下吗 我试了你最好发的那个demo 不好使啊
请问你解决了吗?我们也要做这种
ender129 2017-03-30
  • 打赏
  • 举报
回复
楼主 能把你解决的代码发下吗 我试了你最好发的那个demo 不好使啊
qq_15510633 2017-03-23
  • 打赏
  • 举报
回复
楼主求Demo
云雾已大致 2016-08-10
  • 打赏
  • 举报
回复
请问楼主 如何用代码实现?
Coke先生 2016-01-13
  • 打赏
  • 举报
回复
把白色的颜色给变成透明的,方法如下: + (UIImage*) imageToTransparent:(UIImage*) image { // 分配内存 const int imageWidth = image.size.width; const int imageHeight = image.size.height; size_t bytesPerRow = imageWidth * 4; uint32_t* rgbImageBuf = (uint32_t*)malloc(bytesPerRow * imageHeight); // 创建context CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(rgbImageBuf, imageWidth, imageHeight, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipLast); CGContextDrawImage(context, CGRectMake(0, 0, imageWidth, imageHeight), image.CGImage); // 遍历像素 int pixelNum = imageWidth * imageHeight; uint32_t* pCurPtr = rgbImageBuf; for (int i = 0; i < pixelNum; i++, pCurPtr++) { if ((*pCurPtr & 0xFFFFFF00) == 0xffffff00) { uint8_t* ptr = (uint8_t*)pCurPtr; ptr[0] = 0; } } // 将内存转成image CGDataProviderRef dataProvider =CGDataProviderCreateWithData(NULL, rgbImageBuf, bytesPerRow * imageHeight, ProviderReleaseData); CGImageRef imageRef = CGImageCreate(imageWidth, imageHeight,8, 32, bytesPerRow, colorSpace, kCGImageAlphaLast |kCGBitmapByteOrder32Little, dataProvider, NULL, true,kCGRenderingIntentDefault); CGDataProviderRelease(dataProvider); UIImage* resultUIImage = [UIImage imageWithCGImage:imageRef]; // 释放 CGImageRelease(imageRef); CGContextRelease(context); CGColorSpaceRelease(colorSpace); return resultUIImage; } /** 颜色变化 */ void ProviderReleaseData (void *info, const void *data, size_t size) { free((void*)data); }
xcy19890309 2015-09-13
  • 打赏
  • 举报
回复
楼主不知道你的hue的区间是多少?
coooliang 2015-09-01
  • 打赏
  • 举报
回复
因为版主觉得这是opencv的相关问题,所以推荐了
JoXu 2015-08-19
  • 打赏
  • 举报
回复
@hitwhylz ,学习了一下http://blog.csdn.net/zhangao0086/article/details/39120331这张贴,请问你最后是怎么实现扣去白色的背景,研究了几天没什么头绪
Colin丶 2014-11-19
  • 打赏
  • 举报
回复
引用 21 楼 zhangbingcox 的回复:
让美工重做个图不就行了吗
不是.. 是我想知道怎么用代码实现这个功能。
oc小菜 2014-11-19
  • 打赏
  • 举报
回复
让美工重做个图不就行了吗
yeqishi 2014-11-19
  • 打赏
  • 举报
回复
方法如下: 1. 代码实现PS的白色区域抠图功能,这个网上可以找一下算法,把剩余的颜色按照png格式存储 2. 图片发给我,我给你PS抠图
Colin丶 2014-11-19
  • 打赏
  • 举报
回复
引用 23 楼 zhangao0086 的回复:
我用CoreImage实现过: http://blog.csdn.net/zhangao0086/article/details/39120331
问题解决了。 感谢@zhangao0086 http://blog.csdn.net/zhangao0086/article/details/39120331 给分结帖。
Colin丶 2014-11-19
  • 打赏
  • 举报
回复
引用 18 楼 xr_rr 的回复:
如果背景颜色没有特别要求的话 可以用mac的系统工具拾色器得到空白处的rgb值 这个是白的感觉有点坑... 还是用ps抠一下吧
额.. 谢谢。 我是想用代码实现
XMelo 2014-11-19
  • 打赏
  • 举报
回复
如果背景颜色没有特别要求的话 可以用mac的系统工具拾色器得到空白处的rgb值 这个是白的感觉有点坑... 还是用ps抠一下吧
翅膀又硬了 2014-11-19
  • 打赏
  • 举报
回复
取到每个像素值,然后判断颜色,可以参照这个http://blog.csdn.net/devday/article/details/5199218。我刚做了根据像素RGB值,生成image,就是参照的这个。
Colin丶 2014-11-19
  • 打赏
  • 举报
回复
引用 23 楼 zhangao0086 的回复:
我用CoreImage实现过: http://blog.csdn.net/zhangao0086/article/details/39120331
多谢。 我看看。
Bannings 2014-11-19
  • 打赏
  • 举报
回复
我用CoreImage实现过: http://blog.csdn.net/zhangao0086/article/details/39120331
Colin丶 2014-11-17
  • 打赏
  • 举报
回复
引用 15 楼 ooppookid 的回复:
[quote=引用 14 楼 hitwhylz 的回复:] [quote=引用 11 楼 ooppookid 的回复:] [quote=引用 10 楼 huwei001982 的回复:] 我只想问一个问题, 为什么这个贴可以得到“推荐”?
我也很好奇,因为分高么?[/quote] 那您觉得, 什么样的帖子才能推荐?[/quote] 一般都是长篇大论,怎么也得好几百个字吧。。而且一般问问题的帖子很少能推荐~~楼主你赚到了![/quote] 不是的。 你可能误会了。 因为我是版主,有一些权限。 提问的时候比较急,我就“滥用私权”给自己推荐了下..希望更多的人看到 不过你应该能发现, 现在已经不是推荐了。相应的推荐分数也返还了。没有“占便宜” 如果让你误会什么了。 抱歉。
Colin丶 2014-11-17
  • 打赏
  • 举报
回复
引用 13 楼 Trent1985 的回复:
[quote=引用 12 楼 hitwhylz 的回复:] [quote=引用 7 楼 Trent1985 的回复:] [quote=引用 楼主 hitwhylz 的回复:] 散散分, 顺便问个问题。 对图像处理部分不了解,请问有没有办法把一张图片(.jpg)的白色背景抠掉,转成.png 格式的有alpha通道的透明图。 原图黑白分明, 像这样 转换成这样 希望懂的帮帮忙。 多谢。
只要你学过图像处理基本知识,很简单:1,图像二值化,将图像分为黑白两种,记录黑色和白色的位置;2,按照位置信息对原始图像中黑色的像素设置alpha=255,其他白色设置为0,保存为png图像格式即可。另外,PS本身就是图像处理知识的集锦,这个问题,对于搞图像处理的来说就是1+1![/quote] 思路是一样的。但是我没接触过图像相关处理。现在的问题就是,在iOS平台, 如何用代码实现二值化处理。 我再找找相关资料吧。[/quote]这个就是另外一个问题了,这个二值化的代码,网上一堆,你可以找下![/quote] 准确来说, 二值化我已经处理好了。 现在是jpg原先没有alpha,不懂如何给相应位置上设置alpha。 不过大致思路应该就是这样,还是很感谢。
猿人林克 2014-11-17
  • 打赏
  • 举报
回复
引用 14 楼 hitwhylz 的回复:
[quote=引用 11 楼 ooppookid 的回复:] [quote=引用 10 楼 huwei001982 的回复:] 我只想问一个问题, 为什么这个贴可以得到“推荐”?
我也很好奇,因为分高么?[/quote] 那您觉得, 什么样的帖子才能推荐?[/quote] 一般都是长篇大论,怎么也得好几百个字吧。。而且一般问问题的帖子很少能推荐~~楼主你赚到了!
加载更多回复(14)

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧