问题标签 [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 投票
1 回答
4861 浏览

c# - 如何在 c# 中使用 system.drawing 将居中文本绘制到 jpg 上

我正在使用以下代码将文本绘制到 jpg 图像上,但它需要 x/y 坐标精确到放置文本的位置。

我将如何将文本居中放置在图像上?我猜这与定义某种容器(可能是矩形?)有关,它是图像的宽度并将文本居中放在其中?不确定对此的最佳做法是什么。

0 投票
2 回答
3378 浏览

asp.net-mvc - 如何从 System.Drawing.Bitmap 类型(标签?)

我正在向 ASP.NET MVC 中的视图发送位图。我的 ViewModel 中有一个属性:

public Bitmap TemplateImage { get; set; }

在我的视图中,我希望能够渲染该位图图像,但我不知道该怎么做。

0 投票
4 回答
28498 浏览

c# - Image.Save() 对 jpeg 文件使用什么质量级别?

当我加载一个jpg文件并转身以100的质量保存它并且大小几乎是原始文件的4倍时,我真的很惊讶。为了进一步调查,我在没有明确设置质量的情况下打开并保存,文件大小完全相同。我认为这是因为没有任何改变,所以它只是将完全相同的位写回文件。为了测试这个假设,我在图像上对角画了一条粗线,并在没有设置质量的情况下再次保存(这次我希望文件会跳起来,因为它会“脏”)但它减少了 ~10Kb!

在这一点上,当我简单地调用 Image.Save() 而不指定压缩质量时,我真的不明白发生了什么。当我将质量设置为 100(基本上没有压缩)时,文件大小如何(在修改图像后)与原始大小如此接近,当我将质量设置为 100 时,文件大小是原始大小的几倍?

我已经阅读了有关 Image.Save() 的文档,并且缺少有关幕后发生的事情的任何细节。我已经用谷歌搜索了我能想到的所有方式,但我找不到任何可以解释我所看到的其他信息。我已经连续工作了 31 个小时,所以也许我遗漏了一些明显的东西 ;0)

所有这一切都是在我实现一些库方法将图像保存到数据库时发生的。我已经重载了我们的“SaveImage”方法以允许明确设置质量,并且在我的测试过程中,我遇到了上面解释的奇怪(对我来说)结果。您可以散发的任何光芒将不胜感激。

这是一些代码,可以说明我正在经历的事情:

0 投票
1 回答
6660 浏览

c# - 使用 EncoderParams 将 MemoryBmp 上的 Image.Save() 转换为 TIFF - 如何?

我有一个允许用户定义图像区域并将该区域保存到文件的应用程序。我遇到了一个我无法解决的障碍。我创建的用于绘制选定区域的位图被“MemoryBmp”的 ImageFormat 卡住,看起来这是为任何非文件加载位图设置的 ImageFormat。问题是我的位图是在内存中创建的,我想将其保存为 CCITT4 双色 TIFF,但我收到“GDI+ 中发生一般错误”异常。我非常有信心这是因为 Image.RawFormat 属性是可怕的 MemoryBmp。

Image.Save() 有一个带有 ImageFormat 参数的重载,当我使用传递 ImageFormat.Tiff 时,它保存得很好,但我没有机会指定我的编码器参数。

我能想到的唯一可能的解决方法是使用 Image.Save(Image, ImageFormat) 保存到磁盘然后重新加载它(RawFormat 现在将正确设置为 ImageFormat.Tif),然后通过编码器设置再次保存。这只是愚蠢的,但必须有更好的方法。

这是一段代码(这只是测试的东西),如果我之前的描述不够清楚,应该可以让您了解我在做什么:

哦,我应该提到“loadedIimage”确实是一个 tiff 图像,我将 loadImage 的引用传递给 Bitmap.ctor() 以查看它是否会提示它正在处理的内容,但它没有任何区别。

0 投票
1 回答
794 浏览

c# - 如何修改/添加元数据到 System.Drawing.Image 文件

业务目的:我正在创建一个 CMS,并允许用户“删除”他们之前上传到服务器的图像。

问题:如果我允许他们真正删除图像,他们会留下他们用现已损坏的图像创建的旧帖子。示例:用户上传 vtWinsACC2005.jpg,写了一篇关于它的文章链接到图片,然后最后清理了他的画廊并删除了该图片,但不理会文章,最后得到了图片损坏的文章。

目标:当用户“删除”他们之前上传的图像时,我想在 IO 中的实际文件中添加“注释”字段或任何类型的元数据,例如“hidden=true”和在我的 GetFiles() 逻辑中,我将检查以确保该元数据不存在。这样,用户就看不到他们删除的图像,他们甚至可以在将来“恢复”他们不想删除的图像。当他们恢复时,我可以简单地从该文件中擦除元数据,仅此而已。

替代方法:在数据库中使用 userId + fileName 保留一个简单的查找表,并将其命名为“HiddenUserImage”,但是,上面的方式更有趣,如果我不必添加另一个表,那就太好了!

有任何想法吗??这将在 C# 中。谢谢!

0 投票
8 回答
31245 浏览

c# - 从 System.Drawing.Image.RawFormat 获取 ImageFormat

此代码在尝试调用时失败Image.Save(MemoryStream, ImageFormat)

我得到了例外:

值不能为空。参数名称:编码器“

如果我ImageFormat直接传入一个对象,例如ImageFormat.Jpeg.

rawformat转换to的最佳方法是什么ImageFormat(最好没有 switch 语句或大量 if 语句)

谢谢本

0 投票
1 回答
158 浏览

iphone - 用于 Cocoa/iPhone 图像处理的 System.Drawing.Imaging 类接口

我正在为 iPhone/iPad 寻找一个图像处理库,在 .net 端具有类似 System.Drawing.Imaging 的功能。

我想做的事情:

  • 绘制基本形状,如椭圆、矩形、文本
  • 将它与 UILabel、UIViews 等内容一起绘制到屏幕上的某个位置。理想的情况是可以导出为 UIImage 控件接受的数据格式(类似于 .net 框架)。

标准框架中是否存在这样的库,还是我需要其他东西?您能否提供(链接)一些示例代码?

谢谢!

伊万·詹森斯

0 投票
4 回答
6407 浏览

c# - 以编程方式用白色填充替换图像中的透明区域?

我有一个 PNG 图像,我正在通过 .NET 中的 System.Drawing API 对其进行操作。它有很大的透明区域,我想用白色填充替换透明区域——这样图像中就没有透明区域了。在图像编辑程序中很容易......但到目前为止,我在 C# 中没有成功。

有人可以给我一些指示吗?

0 投票
2 回答
247 浏览

.net - 它是位图还是元文件?

鉴于Stream知道将是一张图片,有没有办法以编程方式确定它是 aBitmap还是MetaFile从 中提取的a Image.FromStream(mystream)?比如旗帜什么的。

环境:.NET、System.Drawing、C#/VB

0 投票
2 回答
4141 浏览

entity-framework - System.Drawing.Image EntityType 'Image' 没有定义键。定义此 EntityType 的键

我正在使用 EF Code First 和 Data Scaffolding 并且有一个包含类型属性的实体

在初始化数据库上下文以创建数据库时,我收到以下错误:

System.Data.Edm.EdmEntityType: : EntityType 'Image' 没有定义键。定义此 EntityType 的键。

System.Data.Edm.EdmEntitySet:EntityType:EntitySet Images 基于没有定义键的 Image 类型。

关于如何解决这个问题的任何想法?