`
siruoxian
  • 浏览: 237806 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

图片背景变透明

阅读更多

-(UIImage *)BackgrounTransparent:(UIImage*)image{

    CGImageRef  imageRef = image.CGImage;

   

    size_t width  = CGImageGetWidth(imageRef);

    

    size_t height = CGImageGetHeight(imageRef);

    

   

    // 构成像素的各个RGB要素为多少bit

    

    size_t                  bitsPerComponent;

    

    bitsPerComponent = CGImageGetBitsPerComponent(imageRef);

    

   

    // 像素整体为多少bit构成

    

    size_t                  bitsPerPixel;

    

    bitsPerPixel = CGImageGetBitsPerPixel(imageRef);

    

    

    // 画像的横向一行的数据为多少bit构成

    

    size_t                  bytesPerRow;

    

    bytesPerRow = CGImageGetBytesPerRow(imageRef);

    

    

    

    // 画像的色彩空间

    

    CGColorSpaceRef    colorSpace = CGImageGetColorSpace(imageRef);

    

  

    // 画像的Bitmap信息

    

    CGBitmapInfo    bitmapInfo = CGImageGetBitmapInfo(imageRef);

    

    

    

    // 画像的像素间的补正是否完成

    

    bool                    shouldInterpolate;

    

    shouldInterpolate = CGImageGetShouldInterpolate(imageRef);

    

    

    

    // 是否根据显示设备来进行了补正

    

    CGColorRenderingIntent intent = CGImageGetRenderingIntent(imageRef);

    

    

    

    // 获取画像的数据提供者

    

    CGDataProviderRef   dataProvider = CGImageGetDataProvider(imageRef);

    

    

    

    // 从数据提供者获取画像的bitmap数据

    

    CFDataRef   data;

    

    UInt8*      buffer;

    

    data = CGDataProviderCopyData(dataProvider);

    

    buffer = (UInt8*)CFDataGetBytePtr(data);

    

    UInt8 oldred,oldgreen,oldblue,oldAlpha;

    

    UInt8*  oldtmp;

    

    oldtmp = buffer  ;

    

    oldred=*(oldtmp+0);

    oldgreen=*(oldtmp+1);

    oldblue=*(oldtmp+2);

    oldAlpha=*(oldtmp+3);

    NSLog(@"oldred:%d,oldgreen:%d,oldblue:%d,oldalpha:%d",oldred,oldgreen,oldblue,oldAlpha);

    NSInteger tolerance =15; //容差

    // 一个像素一个像素地处理画像

    

    NSUInteger  x, y;

    

    for (y = 0; y < height; y++) {

        

        for (x = 0; x < width; x++) {

            

            UInt8*  tmp;

            

            tmp = buffer + y * bytesPerRow + x * 4;

            

            

            

            // 获取RGB的值

            

            UInt8 red,green,blue,alpha;

            

            red = *(tmp + 0);

            

            green = *(tmp + 1);

            

            blue = *(tmp + 2);

            

            alpha=*(tmp+3);

 

            if (abs(red-oldred)<=tolerance && abs(green-oldgreen)<=tolerance && abs(blue-oldblue)<=tolerance) {

 

                *(tmp + 0) = 0;

                

                *(tmp + 1) = 0;

                

                *(tmp + 2) = 0;

                *(tmp + 3) = 0;

            }

            

        }

        

    }

 

    

    // 生成赋予效果的数据

    

    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, kCGImageAlphaLast, effectedDataProvider,

                                    

                                    NULL, shouldInterpolate, intent);

    

    effectedImage = [[UIImage alloc] initWithCGImage:effectedCgImage];

    

    

    

    CGImageRelease(effectedCgImage);

    

    CFRelease(effectedDataProvider);

    

    CFRelease(effectedData);

    

    CFRelease(data);

    

    

    

    return effectedImage;

    

}

 转载自:http://siruoxian.iteye.com/admin/blogs/1979574

2
0
分享到:
评论

相关推荐

    易语言PNG图片透明背景源码.rar

    本文将深入探讨如何在易语言中处理PNG图片的透明背景,以及如何利用源码实现这一功能。 PNG(Portable Network Graphics)是一种支持透明效果的图像格式,其独特的 alpha 通道可以实现不同程度的透明度。在易语言中...

    易语言PNG图片透明背景

    易语言PNG图片透明背景源码,PNG图片透明背景,释放字节流,创建字节流,取字节流指针,取字节流尺寸,取出字节集,置窗口PNG外型,Gdiplus_初始化,GdipCreateFromHDC,GdipLoadImageFromFile,GdipLoadImageFromStream,...

    js处理.png图片,显示透明背景

    由于IE7以下不支持图片的背景的透明.根据IE特性,我们可以用IE的滤镜来实现透明处理 你只要包含下面这个pngfix.js文件就行,如下: &lt;!--[if lt IE 7]&gt; &lt;script defer type="text/javascript" src="/Js/pngfix.js"&gt;&lt;/...

    js把图片的背景变透明

    ### 使用JavaScript将图片背景变为透明的方法 在Web开发过程中,我们常常需要处理各种各样的图片。其中一项常见的需求就是让图片的背景变为透明,这样可以使图片更好地融入网页的整体设计之中。本文将详细介绍如何...

    抠图软件图片背景透明工具(加强版)

    抠图软件图片背景透明工具(加强版)是一款专为用户设计的高效图像处理软件,它具有强大的功能,能够帮助用户轻松地将图片的背景部分去除,使其变得完全透明。这款加强版工具在原有的基础上增加了更多优化,使得抠图...

    制作背景色透明的图片

    特别是在需要将图片嵌入到不同颜色或图案的背景下时,背景透明的图片可以更好地融合整体设计,提高视觉效果的和谐度。Adobe ImageReady CS2是一款专门用于网页图形设计的应用程序,它提供了强大的工具来帮助用户创建...

    图片背景透明工具加强版(抠图软件)

    "图片背景透明工具加强版"是一款专为用户提供高效抠图服务的软件,它允许用户轻松地将图片的背景去除,使图像呈现出透明效果。下面将详细阐述这款软件的特点、功能以及可能涉及的技术知识点。 首先,抠图是图像编辑...

    MATLAB.zip_change color_matlab图片背景_matlab改图片为透明_motherib9_图片透明ma

    下面我们将详细讨论如何在MATLAB中改变图片背景以及如何使图片背景变得透明。 1. **读取图像**:首先,我们需要使用MATLAB的`imread`函数来读取图片。例如,`img = imread('image.jpg')`会将名为'image.jpg'的图片...

    处理图片背景色,使用透明(C#)&图片处理程序(含源码)

    遇到的问题: 1。MakeTransparent转换透明背景,保存后 背景色变成...保存后背景色不会变黑色(已测,在PS和页面中确已透明) 2。清晰度只有一点细微变化,处理后依然很清晰,黑色像素点,已解决 3。效率高了很多。。

    gif透明背景loading图片大全

    "gif透明背景loading图片大全"这个资源正是一款专为提升网站或应用加载过程用户体验而设计的素材集合。加载图(Loading)通常用于表示内容正在加载或者等待用户操作,而透明背景的gif图片则能更好地融入各种界面设计...

    InTouch里面如何设置插入的图片背景色为透明.docx

    本文将详细介绍两种在InTouch中实现图片背景透明的方法。 #### 方法一:通过ArchestrA图符编辑器插入PNG格式图片 这种方法适用于InTouch 2014R2及更高版本。 1. **创建新型InTouch应用程序** 在InTouch应用程序...

    CSS鼠标悬停图片上图片变灰 变色 半透明

    在这个特定的问题中,我们关注的是如何通过CSS实现鼠标悬停时图片效果的变化,比如图片变灰、变色以及半透明。下面将详细介绍这些效果的实现方法。 1. 图片变灰: 当鼠标悬停在图片上时,可以使用CSS的`filter`...

    批量将png图片背景色改为透明

    使用方法:双击软件弹出文件拾取框选择图片

    易语言PNG图片透明背景源码

    易语言PNG图片透明背景源码例程程序结合易语言扩展界面支持库和应用接口支持库,调用API函数实现PNG图片作为窗口的透明背景。点评:本源码是易语言PNG图片的应用实例。 @易语言难学吗。

    C#文字转透明背景图片

    ### C# 文字转透明背景图片技术解析 #### 技术背景 在软件开发过程中,尤其是Web应用和移动应用的开发中,经常需要将一些文本信息转换成图片的形式,以便更好地进行展示或存储。而在某些应用场景下,比如制作图标、...

    C#图片半透明、完全透明及指定颜色透明

    本文将详细讲解如何实现图片的半透明、完全透明以及指定颜色透明的效果。 首先,我们需要了解基本的图像处理概念。在计算机图形学中,透明度通常被称为“alpha通道”,它是一个介于0和255之间的值,其中0代表完全...

    七色小汽车图片,背景透明PNG图片

    "七色小汽车图片,背景透明PNG图片"这个资源,显然是一组包含了多种颜色小汽车的PNG图像,每个图片的背景都是透明的,这对于设计师来说是一个非常实用的素材库。 PNG(Portable Network Graphics)格式是一种无损...

    动态图片+背景透明图片

    在IT行业中,动态图片与背景透明图片是设计领域中不可或缺的部分,特别是在用户界面(UI)设计、移动应用、网页设计以及各种数字媒体创作中。这些元素可以极大地提升用户体验,增加视觉吸引力,同时允许内容与背景...

    背景透明的gif的loading图片,正在加载的gif

    在IT领域,尤其是在网页设计和用户体验优化中,"背景透明的gif的loading图片"是一种常见的技术应用。这种图片主要用于表示内容正在加载或者等待用户交互,为用户提供视觉反馈,提升用户体验。下面将详细解释这个主题...

    MiniGUI 按键切换图片,背景图片,控件透明。

    在“MiniGUI按键切换图片,背景图片,控件透明”的主题下,我们将深入探讨MiniGUI中的关键概念和技术。 首先,我们要理解如何在MiniGUI中使用按键切换图片。在嵌入式系统中,通常没有鼠标或触控屏幕,因此按键是...

Global site tag (gtag.js) - Google Analytics