C#  图片背景变为透明

今天遇到从身份证读取信息粘贴到身份证模板身份身份证图片的需求,但是获取的身份证头像是带背景色的所以需要去掉背景色。CSDN找了半天都是bitmap.MakeTransparent

这种只适用于纯色,但一般图片背景都不会是纯色就会很麻烦,只能通过遍历像素来修改像素点的颜色然后再透明。下面是效果和源码,小白第一次分享,有错误请大佬斧正。

原图

处理后

public static Image GetImage(Image image)
        {
            // 高度和宽度
            int height = image.Height;
            int width = image.Width;

// 生产背景透明和内容透明的图片
            Bitmap bitmap = new Bitmap(image);
            //bitmap.SetResolution(72, 72);
            Graphics graphics = Graphics.FromImage(bitmap);
            graphics.DrawImage(bitmap, 0, 0);
            int alpha = 0; // 图片透明度
                           // 外层遍历是Y轴的像素

for (int y = 0; y < bitmap.Height; y++)
            {
                // 内层遍历是X轴的像素
                for (int x = 0; x < bitmap.Width; x++)
                {
                    int rgb = bitmap.GetPixel(x, y).ToArgb();
                    // 对当前颜色判断是否在指定区间内
                    if (colorInRange(rgb))
                    {
                        alpha = 0;
                    }
                    else
                    {
                        // 设置为不透明
                        alpha = 255;
                    }
                    // #AARRGGBB 最前两位为透明度
                    rgb = (alpha << 24) | (rgb & 0x00ffffff);
                    bitmap.SetPixel(x, y, Color.FromArgb(rgb));
                }
            }

// 绘制设置了RGB的新图片,这一步感觉不用也可以只是透明地方的深浅有变化而已,就像蒙了两层的感觉
            //graphics.DrawImage(bitmap, 0, 0);

// 生成图片为PNG
            return bitmap;

}

//色差范围0~255
        public static int color_range = 190;//0是纯黑,255是纯白。190以上 全部改为透明。0也改为透明,

// 判断是背景还是内容
        public static bool colorInRange(int color)
        {
            int red = (color & 0xff0000) >> 16;// 获取color(RGB)中R位
            int green = (color & 0x00ff00) >> 8;// 获取color(RGB)中G位
            int blue = (color & 0x0000ff);// 获取color(RGB)中B位

if (red == 0 && green == 0 && blue == 0)
            {
                return true;
            }

// 通过RGB三分量来判断当前颜色是否在指定的颜色区间内
            if (red >= color_range && green >= color_range && blue >= color_range)
            {
                return true;
            };
            return false;
        }

C#  图片背景变为透明相关推荐

  1. 如何用技术手段将图片背景变为透明?

    咪哥杂谈 本篇阅读时间约为 6 分钟. 1 前言 上周给大家分享了人脸识别的一个 Python 库.今天来继续讲讲我上次在评论区留言的后续. 既然是追热点的需求,大家可以想想,近几年发生在身边的热点事 ...

  2. 图片如何去掉背景色?如何使图片背景变透明?

    图片设计工作者常常需要用透明背景图片,如果下载的图片素材不是透明背景的话,就需要先用图片处理工具将图片背景变透明.下面我们就使用压缩图的图片去底色(https://www.yasuotu.com/bu ...

  3. 怎么将素材图片背景变透明?如何一键抠除图片背景?

    我们在提取一些素材图片的时候,可能会因为图片格式等原因,使原本背景透明图片变成了纯色背景图片.这时候我们需要使用抠图功能去除图片背景色,但是对不会用ps的小伙伴来说将图片背景变透明就比较困难了,所以小 ...

  4. 前端html分享—如何将背景变为透明

    今天分享下"前端html分享-如何将背景变为透明"这篇文章,文中根据实例编码详细介绍,或许对大家的编程之路有着一定的参考空间与使用价值,需要的朋友接下来跟着云南仟龙Mark一起学习 ...

  5. 怎么把背景图片变透明html,怎样把图片背景变成透明

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 以Photoshop软件为例,把图片背景变成透明的方法是: 1.首先,打开电脑中的Photoshop软件,进入主界面: 2.在Ph ...

  6. poi导出图片失真变为红色和图片背景变为黑色

    插入图片: private void setPicture(HSSFWorkbook wb, HSSFPatriarch patriarch, String pic, int iRowStart, i ...

  7. 图片怎么去掉背景变为透明?如何把图片的背景去掉?

    ​当我们制作海报.商品宣传图等内容时,经常会需要将图片底色变透明,那么怎么才能把图片去底色(https://www.yasuotu.com/pdfyasuo)呢?试试这款在线图片去底色工具,只需要简单 ...

  8. 利用OpenCV识别图片背景是否透明

    因为公司的需求,有几百万张图片需要识别,筛选出背景是透明的图片,我上网找了一圈也没看到成熟的方案,于是自己想了一个比较简陋但是还算是挺好用的方案. 大概的图片就是这些种类吧,图一图三是我想要筛选出来的 ...

  9. 如何将图片背景变为透明色

    在PPT中插入图片,双击后上面出现图片格式,选择颜色后,设置透明色,吸管工具点击图片背景,即变为透明色,另存为后即可

最新文章

  1. 利用SurfaceView显示正弦曲线,仿造示波器
  2. 计算机操作系统第四版习题答案 第一章简答题
  3. 和rna用什么鉴定_RNA-seq:测序原理之文库构建
  4. 敏捷项目向组合级看齐
  5. 什么是Java Marker Interface(标记接口)
  6. Sqlldr使用介绍
  7. 【详细讲解】1065 A+B and C (64bit) (20 分)
  8. python输入数据爬取_python根据用户需求输入想爬取的内容及页数爬取图片方法详解...
  9. 客座编辑:朱扬勇,男,复旦大学计算机科学技术学院教授,上海市数据科学重点实验室主任。...
  10. Uzi宣布退役:身体条件不允许再继续战斗了!
  11. C# 中的 ConfigurationManager类引用方法应用程序配置文件App.config的写法
  12. CSS 图片去色处理
  13. 【安天】Xcode非官方版本恶意代码污染事件(XcodeGhost)的分析与综述
  14. 二维dtw算法matlab实现,下载的用MATLAB实现的DTW算法,不会用,跪求大神帮忙
  15. VS实现格式化代码及代码缩进
  16. 阿里云DataV数据可视化---数据
  17. PS制作gif动图教程
  18. 面试后说hold什么意思_面试结束后就傻傻等通知?你还可以做这三件事!
  19. 西湖论剑_unknown_dsa_复现
  20. ch3 系统总线(一)

热门文章

  1. 关于adb指令安装卸载apk的几个常用命令
  2. 阿里腾讯都到百度去挖AI大牛,百度对此却不care,为何?
  3. Android SnackBar
  4. js可以打开mat文件吗_企业微信最大可以传多大文件?企业微信发送文件有限制吗?...
  5. 花了一些力气研究aircv,搞一个后台找图识图的DEMO
  6. 微信小程序盲盒系统源码 附带教程
  7. opencv3之SVD
  8. docker提交腾讯云标准模式
  9. 如何用lisp画蔓叶线_用Autolisp 在AutoCAD中实现多种曲线的绘制
  10. C++ INT_MAX、INT_MIN、0x80000000以及int中负数的存储