删除位图的黑色背景颜色

2024-01-11

我需要在 C# VS2013 中删除位图的黑色背景颜色。

就像我在画布上画一些点一样。这canvas是黑色的,我只需要将画布更改为透明的同时保持其上的彩色点不做任何改变。

我在以下位置得到了解决方案:如何从位图中删除白色背景色 https://stackoverflow.com/questions/15375453/how-to-remove-white-background-color-from-bitmap

Bitmap capcha = new Bitmap(@"C:/image.png");
capcha.MakeTransparent(Color.Black);

但是,背景仍然是灰色的,就像雾一样覆盖了图像上的点。

如何去除它?

UPDATE我使用了代码:

ImageAttribute imageAttribute = new ImageAttribute();
imageAttribute.SetGamma(0.5f, ColorAdjustType.Bitmap);
gr.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height),
            0, 0, img.Width, img.Height,    GraphicsUnit.Pixel, imageAttribute );

我得到同样的事情。

绘制图像的 C# 代码的更多更新:

 System.Drawing.Bitmap canvasImage = new System.Drawing.Bitmap(xSize, ySize, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
 canvasImage.MakeTransparent(Color.Black);
 Graphics g = Graphics.FromImage(canvasImage);
 System.Drawing.Bitmap tempImage = myDrawImageFunction(myPoints);
 g.Clear(Color.Transparent);  // this only give me an empty image without any points on it. But, if I uncomment it, I will have an  image with black background.
 // my understanding about g.DrawImage() is to draw points on tempImage
 //  after clearing the background. But, the image still have a foggy covering on the image.
 g.DrawImage(tempImage, new System.Drawing.PointF(x_position, y_position));

我想在“tempImage”上绘制任何点之前有一个透明的背景。

示例图像的背景需要删除,但图像上的彩色点需要保留而不进行任何更改。


这将完成这项工作:

public Color MakeTransparent(Color c, int threshold)
{   // calculate the weighed brightness:
    byte val = (byte)((c.R * 0.299f + c.G * 0.587f + c.B * 0.114f));
    return val < threshold ?  Color.FromArgb(0, c.R, c.G, c.B) : c;
}

您可以在像素上的双循环中使用它,但为了快速获得结果,您应该从以下代码中调用它这个帖子 https://stackoverflow.com/questions/28792723/adding-or-subtracting-color-from-an-image-in-a-picturebox-using-c-sharp/28799612?s=1%7C0.1749#28799612(第二部分!)其中使用LockBits.

改变这个

ModifyHue hueChanger = new ModifyHue(MaxChannel);

到新函数:

ModifyHue hueChanger = new ModifyHue(MakeTransparent);

并用一个合适的阈值来调用它,也许是 10 或 20..:

c = hueChanger(c, 20); 

该函数会跳过对系统的调用MakeTransparent函数并直接将每个像素的alpha通道设置为0。

如果你想创建一种统一的颜色而不是透明的颜色,它应该很容易修改(例如通过返回Color.FromArgb(255, 0, 0, 0)对于纯黑色)

请注意,虽然链接帖子中的代码同时采用 24 和 32 bbp 格式,但您绝对应该not保存为JPG,这样会重新引入文物结果不适用于例如ATransparencyKey color..

相反,请将其另存为 PNG,正如汉斯建议的那样!

我希望你能将按钮代码修改为函数:-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除位图的黑色背景颜色 的相关文章

  • 在 C# 中获取 Selenium RemoteWebDriver 的会话 ID

    我正在尝试获取在 SauceLabs 云上运行的测试的会话 ID 但我似乎无法访问它 我尝试过以下方法 Returns null var sessionId string RemoteWebDriver driver Capabilitie
  • 同一个盒子上的进程间通信 - 2 个应用程序或进程之间的通信

    在同一机器上的应用程序之间实现进程间通信的最佳方法是什么 两者都是用 C 编写的 管理器应用程序将向其他应用程序发送命令 例如 停止 启动 它还将监视应用程序并可能要求提供数据 所有应用程序都将在同一台运行 Windows 7 操作系统的计
  • 使用脚本取消设置 PDF 字体

    我正在使用 xhtml2pdf 库自动创建 PDF 几个月前我有过这个问题 https stackoverflow com questions 25203219 xhtml2pdf doesnt embed helvetica 库嵌入了我没
  • ListView 内的 TextBox 绑定到对象,双向绑定不起作用

    Edit 好吧 在尝试了无数次但没有成功之后 我创建了一个非常小的 Wpf 应用程序 您可以直接复制此代码 请注意 当您更改文本框中的值并按 测试 按钮时 这些值永远不会更新 我不明白为什么双向绑定不起作用 请帮忙 这是 xaml
  • 选择数据结构

    根据需求使用不同的数据结构 但我如何知道应该使用哪种数据结构 我只是想知道如何选择合适的数据结构 谢谢 此流程图适用于 C 中的 STL 但您可以用 C 实现 STL 容器支持的任何数据结构 列表是一个链接列表 Vector是一个动态数组
  • std::map - 元素访问无异常且无插入

    我有一个使用 std map 的循环模式 我只想在键存在时检索值 否则我不想插入元素 目前我正在使用count key or find key 哪一个更好 从文档来看 复杂性似乎是相同的 如果它们返回一个正值 我就可以访问地图 但是我想避免
  • 如何将流写入内存流?

    public void doprocess TcpClient client MemoryStream ms new MemoryStream Stream clStream client GetStream byte buffer 1 n
  • C++11 中的延迟初始化顺序

    考虑以下代码 分为三个编译单元 a h struct A void Register const char s const char m s 10 int m i 0 A GetA a cpp include a h include
  • ASP.NET Core处理JSON反序列化问题

    我想更改 ASP NET Core 中无效 JSON 请求处理的默认行为 我有这个模型 public class Model public Guid Id get set 当我用这个 body 发送这个请求时 Id null 它返回此错误消
  • cmake:如何在只有 target_link_directories (没有 target_link_libraries)的共享库中设置 rpath?

    我的项目的目标如下 从我的主可执行文件中 我想加载一个库 libfoo so 加载第二个库 libbar so 我不想在任何路径中指定相对或绝对路径filename我传递给的参数dlopen 即我希望我的代码读取 dlopen libfoo
  • 当找到路由/url 但未找到其背后的资源时返回什么?

    当路由customer 1存在但customer搜索背后的资源 实体不存在时 我应该返回 404 吗 我的意思是路线存在 或者我应该返回一个 204 无内容 因为我找不到客户 结果为空 微软样本 public IHttpActionResu
  • 浮点指令异常——FLDZ故障?

    I am trying to debug the problem I posted earlier here C and pin tool very weird DOUBLE variable issue with IF statement
  • 如何在C++中从Imagemagick图像获取缓冲区

    我正在使用 ImageMagick 库进行图像处理 我需要加载 bmp 图像 将其转换为 jpeg 将其加载到缓冲区中并通过网络发送 但是 我在 ImageMagick 中找不到任何可以在缓冲区中转换和存储数据的支持函数 我只能写入文件 尝
  • 如何从 C 函数中返回多个值?

    如果我有一个产生结果的函数int和一个结果string 如何从函数中返回它们 据我所知 我只能返回一件事 这是由函数名称前面的类型决定的 我不知道你的是什么string是的 但我假设它管理自己的内存 您有两种解决方案 1 返回一个struc
  • Json.Net 反序列化 JSON 对象,索引为名称 [重复]

    这个问题在这里已经有答案了 我尝试使用 Json NET 从 Web 服务解析 JSON 该 Web 服务返回以下格式的数据 0 ID 193 Title Title 193 Description Description 193 Orde
  • 尝试写入事件日志时出错 - 无法打开源“SourceName”的日志。您可能没有写入权限

    目前 我们正在尝试将现有的经典 ASP 页面集成到记录事件日志的新方法中 我们通过调用公开为 COM 对象的 NET 程序集来实现此目的 该程序集实际记录到事件日志中 这一切都正常工作 但是当我们尝试写入事件日志时 我们收到错误 无法打开源
  • 仅仅“抛出”一次捕获有好处吗?

    与一位同事就他将大部分功能包装在 try catch 中的做法进行了 激烈辩论 但 catch 中只有一个 抛出 例如 Private sub foo try Do something catch throw And nothing els
  • 如何在预处理器中检测X32 ABI或环境?

    X32是一个 ABIamd64 x86 64使用 32 位指针的 CPU 这个想法是将 x86 64 的较大寄存器集与 32 位指针产生的较小内存和缓存占用空间结合起来 它可提供高达约 40 的加速 看x86 x32 和 x64 架构之间的
  • Dapper 中的自定义映射

    我正在尝试使用带有 Dapper 和多重映射的 CTE 来获取分页结果 我遇到了重复列的不便 例如 CTE 阻止我命名列 我想将以下查询映射到以下对象 而不是列名和属性之间的不匹配 Query WITH TempSites AS SELEC
  • 反序列化 jQuery 序列化表单

    我正在尝试将表单输入传递到 WebMethod 中并执行某些操作 我用了jQuery 序列化 http api jquery com serialize

随机推荐

  • WPF DataGrid - 添加新行时如何保持关注 DataGrid 的底部?

    我在用DataGrid http msdn microsoft com en us library system windows controls datagrid VS 95 aspx来自WPF工具包 http www codeplex
  • 尝试使用没有过滤器的广播接收器

    IntentFilter intentFilter new IntentFilter test registerReceiver mReceiver intentFilter 我想要没有过滤器registerReceiver mReceiv
  • 如何防止 Apache httpd (MAMP) 中的 http 文件缓存

    我正在 MAMP 中开发一个单页 Javascript 应用程序 我的 JavaScript 和 HTML 模板文件在请求之间被缓存 有没有一种简单的方法可以在 MAMP 中指示我想要阻止 http 文件缓存 可能与一个 htaccess文
  • Laravel Eloquent 在连接表上的位置

    我在 laravel 5 Eloquent 中有两个实体 Foo 和 FooType 具有 oneToMany 关系 class Foo public function fooTypes return this gt hasMany App
  • WooCommerce API 在媒体中创建图像,即使它们存在

    可能是什么原因 尝试通过 REST API 批量更新 WooCommerce 中的产品图像 和价格 图片已存在于 WordPress 媒体库中 并且链接已正确复制 然而 它不是使用图像而是创建新图像 请求 邮寄 网址 Body update
  • 如何将装饰器中的变量传递给装饰函数中的函数参数?

    我正在学习Python 希望有人指出我正确的方法 这就是我想要在下面做的事情 def decorate function def wrap function args kwargs str Hello This is what I want
  • 通过 Tap 将 SQLite 数据库推送到 Heroku?

    所以我试图将 SQLite3 数据库推送到 Heroku 我认为这曾经是可能的 但是阅读here https devcenter heroku com articles heroku postgresql pg push and pg pu
  • Firebase、IN 子句查询和数据列表

    在我看来 当有人必须处理数据库时 这是一个非常明显的问题 所以我不知道为什么我找不到任何有关它的信息 我正在尝试设计非关系数据库对于我的项目 我有一个由一些信息 例如代码 图像和多语言描述 描述的产品列表 它们以不同的方式分类 这是结构的快
  • Python 的图标重叠问题

    我在这个论坛上找到了一些关于如何使用 Python 2 7 和 win32com 包实现图标覆盖处理程序的示例和主题 但它对我不起作用 我不明白为什么 我创建了DLL 注册时没有错误 我也尝试过直接使用脚本 但结果是一样的 就像这个班级从未
  • 内部生成器:无法运行程序“g++”:系统找不到指定的文件

    Internal Builder is used for build g ot1 o t1 cpp Internal Builder Cannot run program g The system cannot find the file
  • :: 在 AngularJS 中是什么意思

    我见过这样的语法 a href some other thing a 那个双冒号是做什么用的 如果将其删除会发生什么 用于一次性绑定 一旦稳定 即第一次消化后 表达式将停止重新计算 所以任何更新something将不可见
  • 将 csv 从云存储导入到云 sql 时服务帐户访问被拒绝(权限问题?)

    我正在尝试使用云存储中的 csv 填充 mysql 数据库 我正在使用API浏览器 https cloud google com sql docs mysql admin api v1beta4 instances import examp
  • 循环 DOMDocument

    我正在遵循这个问题 Robust 的建议 成熟的 PHP HTML 解析器 https stackoverflow com questions 292926 robust mature html parser for php 321963
  • 在 C++ 中将结构体转换为 int

    我有一个结构来表示 29 位 CAN 标识符 其位字段如下 struct canId u8 priority 3 u8 reserved 1 u8 dataPage 1 u8 pduFormat 8 u8 pduSpecific 8 u8
  • 如何使用 Azure DevOps 处理 React 应用程序中的多个环境

    开发人员在那里 我在尝试使用 Azure DevOps 在我的 React 项目中设置多个环境时遇到了一些问题 关于如何完成这项工作的信息并不多 我可以看到如何做到这一点 我想要 发展 生产 目前我已经在我的 React 应用程序上实现了它
  • CORS和XSS有什么联系吗?

    维基百科页面中提到了跨站脚本 XSS CORS http en wikipedia org wiki Cross origin resource sharing 但我不明白它们有什么关系 CORS 和 XSS 之间有什么联系 维基百科文章中
  • 如何从 Android 中的应用程序中删除共享首选项数据

    如何删除我的应用程序的 SharedPreferences 数据 我正在创建一个使用大量 Web 服务来同步数据的应用程序 出于测试目的 我需要在重新启动应用程序时清除一些 SharedPreferences 值 要删除特定值 Shared
  • 使用 Knockout foreach 绑定嵌套数组

    我需要帮助使用淘汰 foreach 绑定嵌套数组 下面是代码 想知道如何获取 PatAppointments 数组中的元素
  • 仅当传入值时才执行Where条件

    我有以下 LINQ 语句where on the date and a LabID 我正在传递实验室列表和日期 但是它们不是必需的 并且我可能只传递日期 而不传递实验室 在这种情况下 我想获取该特定实验室的所有实验室的结果 这是我现在所拥有
  • 删除位图的黑色背景颜色

    我需要在 C VS2013 中删除位图的黑色背景颜色 就像我在画布上画一些点一样 这canvas是黑色的 我只需要将画布更改为透明的同时保持其上的彩色点不做任何改变 我在以下位置得到了解决方案 如何从位图中删除白色背景色 https sta