将隐藏信息写入图像文件c#中
我正在寻找一个教程,其中描述了如何使用C#写入/读取隐藏的文本,但不幸的是,我很喜欢找到有关此的任何好帖子,所以我决定在这里询问这个小技巧. 假设我有一个名为test.jpg的图像文件,是否有任何方法可以将隐藏的文本像" Hello Word"一样?我已经读过有关图像元数据的信息,我想我应该尝试以某种方式写给这个元数据,但是我很喜欢找到方法. 如果有人知道该怎么做,请帮助我了解如何做. 谢谢. 解决方案 正确的术语是"隐肌". 以下文章状态的隐身定义: 隐肌是通过将信息嵌入他人中来隐藏信息的艺术和科学.隐肌的作用是在常规计算机文件中替换一些无用或未使用的数据的位,并用不同的,无形的信息来替换无用的数据.这些隐藏的信息可以是纯文本,密码文本,甚至图像 逐步解释对密封造影的工作方式: 循环穿过图像的像素.在每次迭代中,将RGB值分开在一个单独的整数中. 对于r,g和b的每一个,使LSB等于0.这些位将用于隐藏字符. 获取当前字符并将其转换为整数.然后将其
18 2024-04-26
编程技术问答社区
在OpenCV中使用SURF来匹配图像EmguCV
我正在从这里. > 似乎indices变量存储了匹配信息,但我不知道如何存储信息. 例如,您能告诉我找到了多少个匹配的积分吗?哪个点匹配了哪个点? 解决方案 在这条线上看看. Image result = Features2DToolbox.DrawMatches(modelImage, modelKeyPoints, observedImage, observedKeyPoints, indices, new Bgr(255, 255, 255), new Bgr(255, 255, 255), mask, Features2DToolbox.KeypointDrawType.DEFAULT); 最重要的变量是 mask .该变量都需要信息.它是数组.如果此数组上的值等于1,则意味着我们有一个共同的对.您必须计算在此数组中出现多少次. public int CountHowManyPairsExist( Ma
4 2024-04-26
编程技术问答社区
如何利用C#中的掩码数组将两个图像byte[]数组快速组合在一起
简而言之,我有两个我想使用掩码覆盖另一个图像,以便仅显示第二张图像的一部分.这是实时图像处理程序的一部分,因此我需要尽可能快地进行操作. 具体来说,我有两个32位图像BGR字节数组.另外,我还有一个代表图像掩码的字节阵列. 我想生成一个新的字节数组,其中字节数组a使用蒙版数组叠加在字节数组B上,以决定使用哪个字节. 最快的方法是什么? 我正在看这篇有关老式精灵掩蔽的文章,但我不确定如何最好地将其转化为C#. http://en.wikipedia.org/wiki/wiki/mask/mask_(computing ) 编辑:我忘了提到我可以重组任何或全部以使其运行速度更快. 解决方案 原则上,这样的掩盖非常简单 - 假设数组的大小相同,则该代码可以做到: static void MaskImage(byte[] background, byte[] foreground, byte[] mask) { for (var i = 0;
0 2024-04-26
编程技术问答社区
C# : 将图像保存到数据库中
有人可以给我一些有关如何将图像文件保存到C#中的DB中的建议吗? 我将节省很多图像,所以减少空间的最佳方法是什么 它需要吗? 我目前正在使用DB中的Varbinary(Max)字段. 谢谢! 解决方案 如果您必须将实际文件存储在SQL中,请确保对图像大小进行一些限制,并确保正确计划数据库尺寸 - 您期望多少图像和多少尺寸? 如果您必须将其存储在SQL中,我的偏好是将其自动放在自己的SQL数据库中.这样,我遇到这些图像的任何性能问题都不会影响我的数据库的其余部分. 现在,如果您不必将图像存储在SQL数据库中,那么我认为这只是呼吁使用Azure Blob存储来完成.去看一下 - 它将为您提供非常有效的系统中想要的东西. 如果您不能使用Azure,则应将一类将图像的阅读/写作/查找到文件系统.保存到文件系统(正确完成)将比保存到SQL的工作要好得多. 其他解决方案 那没关系.但是,如果这些图像很大,并且您的DBA可能不再喜欢将它们放入其中,则可以将它们放在驱
6 2024-04-26
编程技术问答社区
在c#中执行多个图像的平均化
我希望从与我拥有的相同大小的3个不同图像中计算出平均图像.我知道这可以在MATLAB中轻松完成..但是如何在C#中解决这个问题?还有我可以直接用于此目的的aforge.net工具吗? 解决方案 我找到了一篇文章,因此可能会指向正确的方向.这是代码(不安全) BitmapData srcData = bm.LockBits( new Rectangle(0, 0, bm.Width, bm.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); int stride = srcData.Stride; IntPtr Scan0 = srcData.Scan0; long[] totals = new long[] {0,0,0}; int width = bm.Width; int height = bm.Height;
4 2024-04-26
编程技术问答社区
image.save方法不能保存图像,发生了GDI+错误。
string ServerUploadFolder = HttpContext.Current.Server.MapPath("~/Uploads/" + value.PhysicalFileName); MultipartFormDataStreamProvider streamProvider = new MultipartFormDataStreamProvider(ServerUploadFolder); Image img = Image.FromFile(ServerUploadFolder); var bmp = new Bitmap(img.Width, img.Height); using (Graphics gfx = Graphics.FromImage(bmp)) { gfx.Clear(Col
2 2024-04-26
编程技术问答社区
使用流与fileupload,以某种方式操纵结果
突然显示在页面上显示并检查文件夹 *发现图像时显示图像时显示的图片突然突然显示.调试我的代码,我发现评论的线路引起了它.下面的代码还是在操纵流吗? public ActionResult UploadPhoto(UserPhotoUploadModel photoFileModel) { HttpPostedFileBase photoFile = photoFileModel.PhotoFile; string uploadPath = Server.MapPath("~/Content/users/photos"); string autoFileName = String.Format("{0}_{1}", Guid.NewGuid().ToString(), filename); string fileDestName = Path.Combine(uploadPath, autoFileName); //Starting
0 2024-04-26
编程技术问答社区
C# 重新着色的图像像素化
我正在尝试从文件系统加载图像,重新彩色,然后将其保存到流中.所讨论的图像相当简单,单色,几何形状. 我有效,但是所产生的图像沿边缘大量像素化. 我尝试了系统.绘制: var colorMap = new ColorMap { OldColor = Color.FromArgb(255, 255, 255, 255), NewColor = Color.FromArgb(255, 255, 0, 0) }; var imageAttrs = new ImageAttributes(); imageAttrs.SetRemapTable(new[] {colorMap}); var newImage = new Bitmap(image.Width, image.Height); var graphics = Graphics.FromImage(newImage); graphics.SmoothingMode = SmoothingMode.Anti
0 2024-04-26
编程技术问答社区
在C#中验证24bpp图像的特定颜色
可以检测到某些颜色,例如24BPP图像中的灰色或红色,因此我可以提取或突出显示的图像上的特定颜色 解决方案 是的,您可以比较像素值. 以下链接显示 如何在运行时更改图像的颜色 如何比较, bmp.GetPixel(x, y) == Color.Red 其他解决方案 @tilak说,您可以使用bitmap.GetPixel for循环搜索图像,例如此 for(int y = 0; y
2 2024-04-26
编程技术问答社区
如何将System.Drawing.Bitmap转换为灰度,然后转换为双数数组(Double[,]),再转换回灰度的Bitmap?
我需要在照片中执行一些数学操作,为此,我需要图像的浮点灰度版本(可能来自带有各种colordepths的JPG,PNG或BMP文件). 我曾经在python中使用PIL和scipy.ndimage进行此操作,而用PIL进行转换为灰度,然后用numpy转换为浮点数非常简单,但是现在我需要在C#中做类似的事情,我很困惑. 我已经阅读了这个非常不错的教程,这似乎是一个经常出现的参考,但这仅涵盖"转换为灰度"部分,我不确定如何从位图中获得双打阵列,然后(在某个时刻)将其转换回它to system.drawing.bitmap查看. 解决方案 最终代码主要基于从评论中获取的提示,特别是LockBits part( private double[,] TransformaImagemEmArray(System.Drawing.Bitmap imagem) { // Transforma a imagem de entrada em um array de doubles //
6 2024-04-26
编程技术问答社区
如何将图像添加到一个类中并保存在数据库中
我有一个像定义的课程,我想在此类中添加图像,我该怎么做: public class CLASSFIVE { public CLASSFIVE() { // Insert code required on object creation below this point. } public int ContactID { get; set; } public string FirstName { get; set; } public string MiddleName { get; set; } public string LastName { get; set; } public string Contact { get; set; } public string GuardianPhone { get; set; } public string DOB { get; set; }
0 2024-04-26
编程技术问答社区
分离扫描文件中的背景/前景层
我需要自动删除OCR的扫描文档图像的轻微彩色背景. scantailor 是一个开源的基于C ++ GUI的应用程序,可以进行背景分离,但我无法弄清楚如何仅运行实际删除背景的最后一步. 理想情况下,我可以找到执行此操作的代码,要么: 端口到c# 修改C ++以响应命令行执行,仅在给定图像上执行该步骤 您能帮我了解我该怎么做吗? 还是您知道其他可以做到的库? (任何语言/平台可接受) 解决方案 您指的是OCR应用中必不可少的阈值,幻想和去除噪声技术. 结果的质量取决于许多不同的因素 - 打印原件的质量 扫描质量 图像分辨率 使用的背景颜色和图案. 噪音和其他标记. 您可能会在 http://www.hi-components上找到ivolution.net库. com/nievolution.asp 有用.它具有许多图像处理功能. 有许多商用发动机可用.没有一个完美的功能来解决图像处理问题.您必须调整功能和参数以匹配图像. htt
8 2024-04-25
编程技术问答社区
使用C#创建真正的灰度图像
我正在尝试创建一个真正的灰度图像,但是当我的设计师检查文件时,他说该图像仍然是RGB. 您可以在此处查看Photoshop打印: 到目前为止,我尝试了两种方法: 1)使用MakeGraysCale3方法: public static Image MakeGrayscale3(Image original) { //create a blank bitmap the same size as original Bitmap newBitmap = new Bitmap(original.Width, original.Height); newBitmap.SetResolution(original.HorizontalResolution, original.VerticalResolution); //get a graphics object from the new image
4 2024-04-25
编程技术问答社区
访问16位TIFF中的像素
我已经导入了16位灰度的图像.我将其作为bitmapsource和图像(控件名称空间).如何访问单个像素?我读过的关于唯一或最佳方法的复饰吗?如果是这样,我就不知道如何设置大步,哪个像素包含像素强度值. method1: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; using System.IO; using Nikon; using WindowsFormsApplication1; using System.Windows.Media.Imaging; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Controls; namespace M
8 2024-04-25
编程技术问答社区
使用Lockbits的边缘检测 C#
我制作了一个实现边缘检测算法的程序, 但是需要很长时间才能处理. 我已经阅读了有关使用Lockbits和不安全状态而不是GetPixel和SetPixel的信息,但我仍然不明白如何使用它. 这是我的示例代码: private Bitmap SobelEdgeDetect(Bitmap original) { Bitmap b = original; Bitmap bb = original; int width = b.Width; int height = b.Height; int[,] gx = new int[,] { { -1, 0, 1 }, { -2, 0, 2 }, { -1, 0, 1 } }; int[,] gy = new int[,] { { 1, 2, 1 }, { 0, 0, 0 }, {
0 2024-04-25
编程技术问答社区
当原始图像的高度和宽度小于缩放的高度和宽度时,图像缩放不起作用。
试图扩展图像时我有问题.当我试图扩展(原始)的图像小于我试图扩展到的大小时,问题就会出现. 例如,宽度为850px的图像和700px的高度试图缩放到950px宽度和高度.该图像似乎是正确缩放的,但在我的位图上划错了.缩放图像的代码将遵循.发送到scaletofitinside的宽度是试图扩展到950px的宽度和高度. public static Image ScaleToFitInside(Image image, int width, int height) { Image reszied = ScaleToFit(image, width, height); Bitmap bitmap = new Bitmap(width, height); using (Graphics g = Graphics.FromImage(bitmap)) { g.Smooth
2 2024-04-25
编程技术问答社区
将图片转换为Gif,部分工作?
我写了一种简短的方法,将图像(图像类)转换为gifencoder,最后将该GIF保存到文件中.但是,当我打开由此产生的GIF创建时,它会遇到一些问题. 1)GIF在浏览器中2个周期后停止播放. 2)当通过图像编辑器加载时,颜色似乎在像素之间混合一点. public void ConvertToGif( string DestinationPath , Image myImage , int myFrames ) { Bitmap myBitmap = new Bitmap( myImage.Width / myFrames , myImage.Height ); GifBitmapEncoder myEncoder = new GifBitmapEncoder(); int i = 0; while( i
0 2024-04-25
编程技术问答社区
在c#中进行3X3中值过滤,但不工作?
确实,我正在尝试通过C#应用3x3中值过滤,并根据我的理解中值过滤的概念,我编写了以下代码,但是当我运行时,表格悬挂.我认为在最后一个嵌套循环中遇到了一些问题,但我不知道应用中位概念的错误或错误在哪里! public static Bitmap MedianFiltering(Bitmap bm) { List termsList = new List(); Bitmap res, temp; Color c; int counter = 0; //Convert to Grayscale for (int i = 0; i
2 2024-04-25
编程技术问答社区
从磁盘上读取png文件并保存回来后,文件大小增加了
我目前正在研究一个小程序,以从磁盘读取PNG文件,进行一些修改并将其保存.除了一个小问题外,一切都顺利运行,在我将文件保存回磁盘之后,其大小总是会增加,例如,27.1MB文件将变为33.3MB. 进行了一些调试后,我终于将其缩小到我的阅读和保存代码.这是我目前正在使用的代码: Bitmap img = new Bitmap(); //omitted img.Save(, ImageFormat.Png); 无论我是否进行过任何修改,我都验证了,只需读取和保存图像就会使其大小变化.此外,如果我用油漆打开保存的文件并从那里保存,则文件将缩短到原始大小. 如何读取并保存图像而不更改图像? 解决方案 您是否尝试过使用endoder.colordepth字段? PNG还支持透明度,并可能保存图像所需的一些信息. ImageCodecInfo pngCodec = ImageCodecInfo.Get
10 2024-04-25
编程技术问答社区
在使用intptr的可写位图创建位图时使用WritePixels。
IM当前正在尝试使用WritableBitMap进行扫描的IntPtr,并将每个图像扫描变成Bitmap.我想使用WritablebitMap,因为我对标准GDI有问题 WriteableBitmap上有一种称为WritePixels的方法 我不确定我为缓冲区设置了什么,而我发现它的每个示例都显示为0,尽管这引发了错误.当我将步幅设置为5时,图像显示为黑色.我知道这可能不是最有效的代码,但任何帮助都将不胜感激. //create bitmap header bmi = new BITMAPINFOHEADER(); //create initial rectangle Int32Rect rect = new Int32Rect(0, 0, 0, 0); //create duplicate intptr to use while in global lock dibhand = dibhandp; bmpptr = GlobalLock(dibhand); //get th
4 2024-04-25
编程技术问答社区