C#转换屏幕截图数据
我需要截取屏幕截图,如果不保存则很容易。 我会将图像数据直接发送到PHP脚本。 因为我目前没有这个PHP脚本,所以我搜索最简单的格式,我应该转换截图数据。 出于调试原因,在我获得PHP脚本之前,我想使用C#在客户端转换这些数据的图片。
我的代码目前用于截取并转换它(我不确定我是否可以将我的日志文件中的输出转换回图片):
internal static byte[] ImageToByteArray(Image img) { byte[] byteArray = new byte[0]; MemoryStream stream = new MemoryStream(); img.Save(stream, System.Drawing.Imaging.ImageFormat.Png); stream.Close(); byteArray = stream.ToArray(); return byteArray; } public static string TakeScreenshot() { String filepath = @"C:log2.txt"; Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb); Graphics graphics = Graphics.FromImage(bitmap); graphics.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy); graphics.Dispose(); bitmap.Save("C:\temp.png"); Image img = (Image)bitmap; string str = System.Text.Encoding.Default.GetString(ImageToByteArray(img)); System.IO.File.AppendAllText(filepath, str); //just for debugging return "OH"; }
目前的主要问题是,有没有办法从我转换的代码(log2.txt)中获取图片。
这行代码:
string str = System.Text.Encoding.Default.GetString(ImageToByteArray(img));
几乎肯定不会做你想做的事。 它将尝试将您的字节数组解释为机器上默认字符编码的字符串。 如果默认值类似于UTF-8或任何多字节字符集,那么它很可能会失败。 即使默认编码是单字节字符集,它也可能会创建一个无法可靠地转回原始字节数组的字符串。
如果你真的想将字节数组存储为文本,可以调用Convert.ToBase64String :
string str = Convert.ToBase64String(ImageToByteArray(img));
如果从文件中将该字符串读回str
,则可以使用以下命令重建字节数组:
byte[] imageBytes = Convert.FromBase64String(str);
在您的特定情况下的另一个优点是有PHP函数来处理基本64字符串。
上述就是C#学习教程:C#转换屏幕截图数据分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1019025.html