问题标签 [system.drawing.imaging]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
17426 浏览

c# - 用于 ASP.NET 的 System.Drawing 的替代品?

在追踪奇怪的 GDI+ 错误几天后,我偶然发现了MSDN上的这个小宝石:

不支持在 Windows 或 ASP.NET 服务中使用 System.Drawing 命名空间中的类。尝试从这些应用程序类型之一中使用这些类可能会产生意想不到的问题,例如服务性能下降和运行时异常。

我不知道“ASP.NET 服务”在这种情况下是否意味着“Web 应用程序”,但“服务性能下降”当然似乎涵盖了“GDI+ 中发生一般错误”和“内存不足”错误的随机分类我的应用程序抛出 - 读取和写入 JPEG 图像的间歇性、不可重现的错误 - 在许多情况下 - 实际上是由 System.Drawing.Imaging 首先创建的。

所以 - 如果 GDI+ 不能在 Web 应用程序中可靠地读取和写入 JPEG 文件,我应该使用什么来代替?

我希望用户能够上传图像(需要 JPEG,其他格式也不错),可靠地重新采样,并在出现任何问题时显示有用的错误消息。有任何想法吗?WPF 中的 System.Media 命名空间值得考虑吗?

编辑:是的,我知道 GDI+“大部分时间”都在工作。这还不够好,因为当它失败时,它会以一种无法优雅地隔离或恢复的方式这样做。我对适用于您的 GDI+ 代码示例不感兴趣:我正在寻找用于图像处理的替代库。

0 投票
1 回答
1824 浏览

c# - 更改 System.Drawing.Bitmap.Palette

我在内存中有一个 TIFF 文件,我通过以下代码的变体获得了该文件:

目前,myImage.Palette 只返回两种颜色,黑色和白色。我想扩展它以包括整个色谱。但是,myImage.Palette 没有添加其他颜色的功能。

有人可以帮我的 TIFF 上色吗?谢谢。

0 投票
3 回答
97 浏览

asp.net - 假设 ASP.NET 和表单上传,有什么方法可以确保文件是图像?

有没有办法通过 MIME 类型或其他检查方式来判断文件是否是图像?图像将进入画廊,我将根据需要调整它们的大小,并希望尽我所能确保我将要使用 GDI 处理的文件实际上是图像。

0 投票
3 回答
2525 浏览

.net - 将 GUID 转换为 System.Drawing.Imaging.ImageFormat

我将有关图像的信息存储在数据库中 - 以及它们的 ImageFormat(jpeg、png 等)。

我想将它作为 GUID 存储在数据库中 - 并从数据库中读取并获取关联的 ImageFormat。

如何将 GUID b96b3cae-0728-11d3-9d7b-0000f81ef32e 转换为 System.Drawing.Imaging.ImageFormat.Jpeg.Guid ?

0 投票
1 回答
400 浏览

.net - 关于 ColorMatrix 的解释性文档有什么好的来源吗?

我想尝试使用ColorMatrix,但只能找到将图像转换为灰度的示例。即便如此,它们也往往被呈现为一块没有任何解释的“神奇数字”代码。

有谁知道如何使用 ColorMatrix 的“教程”?例如,我有兴趣将灰度图像转换为彩色图像,其中白色 == 透明,黑色 = 纯色,中间有灰色像素。ColorMatrix 能做到吗?

0 投票
7 回答
10127 浏览

c# - 确定图像中是否使用了 Alpha 通道

当我将图像引入我的程序时,我想确定:

  1. 他们有一个阿尔法通道
  2. 如果使用了那个 alpha 通道

#1很简单,使用Image.IsAlphaPixelFormat. 但是对于#2,除了循环遍历每个像素之外,是否有一种简单的方法可以确定是否至少一个像素具有使用的 alpha 通道(即设置为其他值而不是255)?我所需要的只是一个布尔值,然后我将确定是将其保存为 32 位还是 24 位。

更新:我发现ImageFlags.HasTranslucent应该为我提供我正在寻找的东西 - 不幸的是,它根本不起作用。例如,具有至少 66 Alpha 通道(半透明)的像素格式的 PNG 继续报告False(用法:)if((img.Flags & ImageFlags.HasTranslucent) == 4) ...;。我已经对所有类型的图像进行了测试,包括 alpha 值 >0 和 <255 的 .bmp 并且它仍然报告False. 任何人都使用过它并知道它是否甚至可以在 GDI+ 中使用?

0 投票
4 回答
1018 浏览

c# - 将正确的 BytesArray 传递到 MemoryStream for Image

如果我想从字节数组中创建一个图像,有一种方法可以确定我将正确的字节数组传递给 MemoryStream。

如果可能,我如何更正byteArray 它是图像的有效 byteArray?

0 投票
1 回答
1600 浏览

c# - 使用 System.Drawing.Image 作为较大图像的中心部分?

我有一个 System.Drawing.Image,我想将其用作新的更大图像的居中部分。我得到了(总是)较大图像的尺寸,想法是使该图像全白并用第一张图像覆盖其中心。有没有办法使用 GDI+ 做到这一点?TextureBrush 和 Graphic 类的某种组合?我愿意接受建议。谢谢!

0 投票
4 回答
3533 浏览

c# - System.Drawing.Image 的文件扩展名

我正在编写一个需要将 a 保存System.Drawing.Image到文件的方法。在不知道创建的原始文件的Image情况下,是否可以确定它应该具有什么文件扩展名?

我想出的最佳解决方案是使用具有 Image.RawFormat 值的 Switch/Case 语句。

Image我以原始格式保存它是否重要?Image从PNG生成的与从JPEG生成的有什么不同吗?还是存储在Image对象中的数据是完全通用的?

0 投票
3 回答
2278 浏览

c# - 如何在 jpg 上绘制文本并使用 c# 中的 system.drawing 重新保存它

任何人都有如何将文本写入 jpg 图像并在 .NET 中使用 System.Drawing 重新保存它的好例子?