.net 位图改变图像的颜色

2023-12-15

我正在尝试调整图像大小而不丢失任何颜色。但我无法让它发挥作用。看下图,上一张是原图,下一张是经过.NET的。

我的问题是,如何保留颜色?

我尝试了很多不同的设置,寻找 GDI+ 错误。更改调色板,将 ImageAttributes 更改为人们在互联网上建议的 TileFlipXY。但似乎都不起作用。

enter image description here

My Code:

Public Class ImageEditor
    Private _img As Image
    Private _format As Imaging.ImageFormat
    Private _pixelformat As Imaging.PixelFormat
    Private _palette As Imaging.ColorPalette

    Public Sub New(ByVal img As Image)
        _img = img
        _palette = _img.Palette
        _format = _img.RawFormat
        _pixelformat = _img.PixelFormat
    End Sub

    Function getImage() As Image
        Return _img
    End Function

    ''' <summary>
    ''' Een stuk afbeelding uit een afbeelding knippen
    ''' </summary>
    ''' <param name="x1">Start X positie</param>
    ''' <param name="y1">Start Y positie</param>
    ''' <param name="width">Breedte van het stuk dat geknipt wordt</param>
    ''' <param name="height">Hoogte van het stuk dat geknipt wordt</param>
    ''' <remarks></remarks>
    Public Sub crop(ByVal x1 As Integer, ByVal y1 As Integer, ByVal width As Integer, ByVal height As Integer)
        ' Cropping the image
        Dim tmp As New Bitmap(width, height, _pixelformat)
        tmp.SetResolution(_img.HorizontalResolution, _img.VerticalResolution)

        Dim imageAttributes As New Imaging.ImageAttributes
        imageAttributes.SetWrapMode(Drawing2D.WrapMode.TileFlipXY)
        Using g = Graphics.FromImage(tmp)
            g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
            g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
            g.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
            g.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
            g.CompositingMode = Drawing2D.CompositingMode.SourceCopy

            g.DrawImage(_img, New Rectangle(0, 0, width, height), x1, y1, width, height, GraphicsUnit.Pixel, imageattributes)
        End Using
        _img = tmp
    End Sub

End Class

我的转换器类..任何我的.NET代码:

        ' Load file
        Dim img As Image = Image.FromFile(filename)
        Dim format As Imaging.ImageFormat = img.RawFormat

        ' Crop and scale
        Dim editor As New ImageEditor(img)
        editor.crop(x1, y1, x2 - x1, y2 - y1)
        img.Dispose()
        ' Generate binairies
        Dim newImg As Image = editor.getImage()

        Dim myEncoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.Quality
        Dim myEncoderParameters As New EncoderParameters(1)
        Dim myEncoderParameter As New EncoderParameter(myEncoder, 100&)
        myEncoderParameters.Param(0) = myEncoderParameter

        Dim ms As New MemoryStream()
        newImg.Save(ms, GetEncoder(format), myEncoderParameters)
        Dim binairies As Byte() = ms.ToArray()

正如汉斯·帕桑特所说。我只需添加真实的Image.FromFile(filename, True)

这个 true 代表:

使用该文件中嵌入的颜色管理信息从指定文件创建图像。

更多信息:http://msdn.microsoft.com/en-us/library/system.drawing.image.fromfile%28v=vs.110%29.aspx

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

.net 位图改变图像的颜色 的相关文章

  • CanExecute 何时被调用?

    在演示中 我有一个按钮可以切换布尔字段isAsking 我创建了一个命令 该命令仅在以下情况下执行isAsking true 一旦我按下切换按钮 okButton IsEnable立即更改 这表明该命令发现了更改isAsking 我感到很困
  • 打印 WPF 位图图像

    打印位图图像的最佳方法是什么 我有 System Drawing 背景 所以我正在考虑将其转换为位图 然后打印它 但我认为可能有更好的方法 Thanks 根据 Drew 的回答 最好测量并安排传递给 PrintVisual 方法的容器 这将
  • DownloadProgressChangedEventHandler 多久被调用一次

    我正在使用 Webclient 异步下载文件 我想知道多久一次 DownloadProgressChangedEventHandler 被调用吗 用户可以控制吗 以下内容适用于完整的 NET Framework 因为您的问题被标记为 ASP
  • 保存 Lisp 状态

    我是 lisp 的初学者 有一个问题 当我直接在 REPL 中编写一些代码 没有任何 lisp 文件 时 如何保存解释器的工作 状态以便下次恢复并继续工作 我用的是ECL 谢谢 抱歉我蹩脚的英语 来自电化学发光手册 http ecls so
  • app.UseHsts() 和 app.UseExceptionHandler() 有什么区别?

    在 NET Core 应用程序的 Startup cs 文件中 默认情况下它使用 public void Configure IApplicationBuilder app IHostingEnvironment env if env Is
  • AsyncTask加载图像RecyclerView

    我正在尝试创建一个与该应用程序类似的应用程序 一个在回收视图中包含一些图像和描述 卡片视图 的应用程序 https lh5 ggpht com At pHbZqdzlgmAqY0jbiztDYIAts1wOYWGTOHibmFHuq8CFA
  • 值类型数组如何存储在 .NET 对象堆中?

    在 NET中 诸如int之类的值类型对象存储在内存中 引用类型对象需要为引用和对象单独分配内存 并且对象存储在 NET对象堆中 而Array是在堆中创建的 那么int 等值类型的数组如何存储在堆中呢 这是否意味着值类型对象可以存储在堆中而无
  • 类型与创建 CLR 存储过程不匹配

    我在程序集中有一个如下所示的方法 namespace MyNameSpace public class MyClass Microsoft SqlServer Server SqlProcedure public static void M
  • 通过名称获取枚举成员的值?

    假设我有一个变量 其值 例如 listMovie 是一个名称enum member public enum Movies regMovie 1 listMovie 2 member whose value I want 在此示例中 我想获取
  • 我应该如何优化 .net 代码中对一个简单存储过程的多次调用?

    我有一个非常简单的存储过程 create procedure spFoo v varchar 50 as insert into tbFoo select v 我有 50 个值要插入到 tbFoo 中 这意味着在我的 c 代码中我调用 sp
  • invalidate方法有什么作用?

    什么是invalidate方法做在winform app Invalidate method附带六超载里面形成control class of System Windows Forms 名称空间 谢谢 Windows 窗体使用 GDI 进行
  • 如何使用 C# 在 .NET 中获取格式化 JSON?

    我正在使用 NET JSON 解析器 并希望序列化我的配置文件 以便它可读 所以而不是 blah v blah2 v2 我想要一些更好的东西 比如 blah v blah2 v2 我的代码是这样的 using System Web Scri
  • 将参数传递给 .NET 定义的命令

    我需要在 Autocad 2000i 的命令行上编写一个命令 并且希望 autocad 提示输入参数 然后我的 vb net 程序将根据收到的参数进行操作 基本上我想我的解决方案都在这里 http through the interface
  • .NET 4.0 迁移后引用 .NET 1.0 程序集的 System.TypeLoadException

    有一个项目从 NET 3 5 迁移到 NET 4 0 该项目有一些对 NET 1 0 程序集的引用 这些程序集是 COM 对象的包装器 这些 NET 1 0 程序集和 COM 对象是外部公司的产品 该项目可以编译 但在运行时 当软件引用这些
  • HttpWebRequest.AllowAutoRedirect=false 会导致超时吗?

    我需要测试大约 300 个 URL 以验证它们是否指向实际页面或重定向到其他页面 我在 NET 2 0 中使用 HttpWebRequest 编写了一个简单的应用程序来检查它 这是代码片段 System Net HttpWebRequest
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 需要使用 php 从远程服务器下载与 $_FILES 相同的内容[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 好的 我有处理图像上传的 php 代
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • 将自定义 ValueProviderFactories 添加到 ASP.NET MVC3?

    我试图尝试将 Protobuf ValueProviderFactory 添加到 MVC3 以便我可以选择 MIME 类型并将原始数据反序列化为操作参数的对象 我还可以使用它来更改默认的 Json 序列化器 看着JsonValueProvi

随机推荐

  • 导入 Excel 数据似乎随机给出空值

    使用 SSIS for Visual Studio 2017 进行某些 Excel 文件导入 我创建了一个包含多个循环容器的包 这些循环容器调用特定的包来处理某些文件 我在执行一个特定包时遇到问题 因为它似乎随机决定每个 Excel 文件的
  • 如何居中对齐SPAN标签中包裹的img?

    我正在尝试居中对齐包裹在 span 但我这样做时遇到困难 我已将 CSS 和 HTML 上传到 jsfiddle http jsfiddle net 7nHhu 1 我试图让图像以 块 样式与内容居中对齐 即其上方和下方的所有文本 而不是向
  • 在 CoreBuild 之前运行目标?

    我正在添加自定义 tt模板生成目标到我的项目之前运行CoreBuild 似乎有两种方法可以做到这一点
  • UIApperance和各种崩溃

    我在自定义我的应用程序时感到非常沮丧 我已经创建并设计了几乎整个应用程序的样式 包括导航栏 工具栏 tabBar 等 但每次 MFMailComposeViewController MFMessageComposerViewControll
  • 正则表达式查找特定长度的数字,但可以包含除其之前或之后的数字之外的任何字符

    我正在尝试制定一个正则表达式模式来搜索字符串中的 12 位数字 该数字可以在我要查找的字符的前面或后面包含任意数量的其他字符 但不能是数字 到目前为止我已经 0 9 12 它可以正确找到 12 位数字 但它也会匹配字符串中的 13 位数字
  • (C++) 与命名空间链接会导致重复符号错误

    在过去的几天里 我一直在尝试弄清楚如何链接我一直在从事的 CLI 游戏项目的文件 该项目有两部分 客户端代码和服务器代码 客户需要我制作的两个库 第一个是通用游戏板 它分为 GameEngine h 和 GameEngine cpp 头文件
  • 从 NodeJS 中的 get 请求流式传输 axios 响应

    我正在寻找在节点程序中使用 axios 向方法 myMethod 发送 返回 可读流 gt 我想将响应流式传输到可用于发送给 myMethod 调用者的 ReadableStream This code does nt work but t
  • 使用 d3.json 从 PHP 输出 JSON

    我创建了一个 PHP 文件来查询 JSON 输出 特定过滤器 testPHP php number 123 的 PHP 文件的 JSON 输出是 source AB target AC type true source UB target
  • 我可以添加自定义 modbar 按钮吗?

    我有一个自动缩放 y 轴的函数 它接收图形和重新布局数据对象 然后输出符合我预先确定的某些标准的 y 轴 我想在 python 上的 dash 中添加一个新的 modbar 按钮 该按钮会在我点击它时触发该函数并更新图形 那可能吗 一个简单
  • 如何减少Python中大列表使用的内存

    我正在编写一个程序 它工作正常 但是当它将数据库 100MB 文本文件 加载到列表时 它的内存使用量变成 700 800MB 用于将文件加载到列表的代码 database db open database db hdb dbcontent
  • 使用 BERT (TF 1.x) 保存的模型执行推理

    我被困在一行代码结果整个周末一个项目都被搁置了 我正在开发一个使用 BERT 进行句子分类的项目 我已经成功训练了模型 并且可以使用 run classifier py 中的示例代码来测试结果 我可以使用此示例代码导出模型 该代码已多次重新
  • 这是 GAC 的所在地吗?

    这是 GAC 的所在地吗 C Windows Microsoft NET assembly GAC MSIL 如果是这样 那么什么是C Windows assembly 答案取决于所使用的 NET Framework 的版本 多个版本可以并
  • 将设备指针传递给 cublasSnrm2 时出现分段错误

    下面的 cublas 代码给了我们错误 core dumped while being at cublasSnrm2 handle row dy incy de 你能给一些建议吗 main cu include
  • 如何从 MySQL 表中获取所有数据组合? [复制]

    这个问题在这里已经有答案了 在过去的五个小时里 我一直试图从表格中获取每种产品选项组合 但现在我完全陷入困境 我有一个表 其中包含如下数据 简化 CREATE TABLE assigned options option id int 10
  • 如何将 C 文件编译为可执行 (.exe) 文件?

    我不确定在 Windows 7 下使用 Cygwin 将 C 文件编译为可执行文件 谁能告诉我该怎么做吗 我读过一些教程但仍然不明白 我知道我需要一个Makefile 但是我应该在其中写入什么才能在编译过程后获得可执行文件呢 一开始我会说安
  • Spring:无法将模拟注入到使用 @Aspect 注释的类中

    我使用 AspectJ 创建了一个 Before 建议 package test accesscontrol permissionchecker import test accesscontrol database SessionExpir
  • 编写 JUnit 测试

    拜托 我是Java新手 如何为以下程序编写 JUnit 测试 要测试的程序 package codekeeper author henryjoseph import java util import java io public class
  • Conda 仅为 env 设置 LD_LIBRARY_PATH [重复]

    这个问题在这里已经有答案了 我安装了 miniconda3 其中创建了一个名为 py35 的虚拟环境 我有一些只想在这个环境中使用的库 因此他们处于 miniconda3 envs py35 libs 但是 由于 LD LIBRARY PA
  • Java JsonObject 数组值到键

    我是java新手 所以这有点令人困惑 我想获取json格式的字符串 我想要的结果是 user name lamis 我目前正在做的是这样的 JSONObject json new JSONObject json put name Lamis
  • .net 位图改变图像的颜色

    我正在尝试调整图像大小而不丢失任何颜色 但我无法让它发挥作用 看下图 上一张是原图 下一张是经过 NET的 我的问题是 如何保留颜色 我尝试了很多不同的设置 寻找 GDI 错误 更改调色板 将 ImageAttributes 更改为人们在互