繁体   English   中英

简单的程序,将图像转换为c#中的字节数组并显示该数组

[英]simple program to convert image to byte array in c# and display that array

这是我写的程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Data;
namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {

            Image img = Image.FromFile("C:\\images.JPG");
            byte[] bArr = imgToByteArray(img);

        }
        public byte[] imgToByteArray(System.Drawing.Image Imagein)
        {
            byte[] data = null;using (System.IO.MemoryStream ms = new MemoryStream())
            {
                Imagein.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                data = ms.ToArray();

            }
            return data;
        }
    }
}

现在,当我构建程序时,它显示错误

非静态字段,方法或属性“ Program.imgToByteArray(Image)”需要对象引用

错误非常明显,您不能在静态上下文(方法)中访问非静态方法。

您有两个选择可解决此问题。

选项1

使您的函数/方法成为静态函数。

public static byte[] imgToByteArray(System.Drawing.Image Imagein)
{
   ...
}

选项2:

创建一个Program实例并访问该方法。

new Program().imgToByteArray(img);

由于您要在控制台中打印字节数组(不确定为什么?),因此可以执行以下操作。

Console.WriteLine(string.Join(",", bytearray);

使imgToByteArray方法为静态。 确实没有其他合理的选择。

关于@Hari Prasad答案的选项2,您认为是“可能的选择”:您将创建一个新的类实例,以从静态类成员中调用该实例的成员,该成员是应用程序的主要入口点,具有相当的核心作用,并且给定代码设计指南,即https://msdn.microsoft.com/zh-cn/library/ms245046.aspx,这是您不应该做的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM