C# 将*项目内*文件的图像更改为字节

C# 将*项目内*文件的图像更改为字节,c#,asp.net,image,byte,C#,Asp.net,Image,Byte,长话短说:我想在数据表的列中放置一个图像。为此,我从各种其他来源收集了需要将图像转换为字节的数据,然后将字节分配给所需的DataRow列 所以我几乎完全得到了我所需要的,除了,我找到的所有指南都是用于引用系统上的文件。我需要转换的图像在项目中 以下是我所拥有的,简称: DataColumn amountcol = new DataColumn(); amountcol.DataType = System.Type.GetType("System.Byte[]"); //... newrow =

长话短说:我想在数据表的列中放置一个图像。为此,我从各种其他来源收集了需要将图像转换为字节的数据,然后将字节分配给所需的DataRow列

所以我几乎完全得到了我所需要的,除了,我找到的所有指南都是用于引用系统上的文件。我需要转换的图像在项目中

以下是我所拥有的,简称:

DataColumn amountcol = new DataColumn();
amountcol.DataType = System.Type.GetType("System.Byte[]");
//...
newrow = dt.NewRow();
newrow[amountcol] = ReadImage("images/dashboard/myvacstatus-am.png", new string[] { ".png" });


问题:它在系统中查找文件,而不是在项目中。

我得到以下错误:


找不到路径“C:\Program Files(x86)\Common Files\Microsoft Shared\DevServer\10.0\images\dashboard\myvacstatus ampm.png”的一部分。请确保从中读取图像的路径有效

更新

使用以下代码获取完整路径

string path = Server.MapPath("images/dashboard/myvacstatus-am.png")
尝试使用绝对(即完全限定)路径,而不是指定的无根相对路径(“images/dashboard/myvacstatus am.png”)


您可能不应该尝试从项目文件夹层次结构中读取文件。相反,请指定将文件部署到部署目录(或子文件夹),然后从那里读取它们。否则,如果将应用程序分发给非开发人员用户,您将遇到麻烦。

为了在web应用程序文件夹结构中查找该文件,您可以使用user
Server.MapPath(“/relative/url/tofile.png”)

这将找到文件,您可以将其读入内存,并对其执行需要执行的操作。但是仅仅将结果
字节[]
分配给数据列表的数据源不会导致显示图像

为了显示图像,您需要:

  • 添加图像的
    属性应指向可以找到图像数据的位置
根据您的设置(您明确地说文件在项目中),您应该能够使用以下内容:

<asp:Image ID="image_myvacstatus" runat="server" 
    ImageUrl="~/images/dashboard/myvacstatus-am.png" />

无需将其加载到内存中并分配给ListView的数据源

如果需要根据每行的其他数据确定要显示的图像,则可以在数据绑定之前在数据源中添加正确的图像名称并使用:

<asp:Image ID="image_myvacstatus" runat="server" 
    ImageUrl='<%# "~/images/dashboard/" + (string)Eval("imageName") %>' />


在项目中你指的是什么?你的意思是它在资源文件中吗?我的意思是,在我的项目中,我有一个名为“images”的文件夹,文件就在这个文件夹中。项目可能会从一台计算机移动到另一台计算机,因此我需要能够引用项目中的该文件夹。您需要使用Server.MapPath()获取完整路径,因为项目可能会从一台计算机移动到另一台计算机(它可能在我的计算机上的C:\驱动器上,但在我的同事计算机上的D:\驱动器上),我需要保持路径的相对性。@CptSupermarket这很好,但是你需要记住,它是相对于某个东西的,你需要一种方法来控制那个东西是什么。关于一个想法,请参见编辑后的答案。我们甚至还没有接近部署阶段或类似的阶段。一切都可能改变。当项目从一台计算机移动到另一台计算机时,在一些任意路径中进行硬编码似乎很容易忘记更改。每次调试应用程序时都会部署它,所以将文件部署到相对于exe文件的某个路径,然后从那里开始。啊,我明白你的意思了。抱歉,我刚刚开始,这是我的第一个项目,所以我对部署过程不太熟悉:)肯定很快我需要尽快学习。谢谢。谢谢,Server.MapPath解决了我在项目中查找文件的问题。让它显示在数据表中仍然有点困难,但这是另一天的问题:)谢谢。
<asp:Image ID="image_myvacstatus" runat="server" 
    ImageUrl='<%# "~/images/dashboard/" + (string)Eval("imageName") %>' />