[英]how to retrive the blob image
i have written a code but its not working properly.first ia trying to make a folder and store the image there but as my database is hosted it creating a problem so i store the image as a blob.kindly help me out where i am doing the mistake. 我已经编写了一个代码,但是它无法正常工作。首先我试图创建一个文件夹并将图像存储在其中,但是由于托管了数据库,因此创建了一个问题,所以我将图像存储为blob。请帮助我在做什么这个错误。 thanks.
谢谢。
public void ItemList_with_images(string value)
{
flowLayoutPanelItemList.Controls.Clear();
// string img_directory = Application.StartupPath + @"\ITEMIMAGE\";
// string[] files = Directory.GetFiles(img_directory, "*.png *.jpg");
try
{
conn.Open();
string sql =
"select distinct Item.Item_id,Item.name,Item.image,Item.cost,Item.price, Category.Name as cat_name from Item" +
" INNER JOIN Category ON Item.Category_id=Category.Category_id" +
" INNER JOIN Ingredients ON Item.Item_id=Ingredients.item_id" +
" INNER JOIN Inventory ON Inventory.Inventory_id = Ingredients.invenotry_id" +
" INNER JOIN inventory_detail ON inventory_detail.inventory_id = Inventory.Inventory_id" +
" where(Item.name like '" + value + "%' and inventory_detail.Quantity > 0 and inventory_detail.loc_id =" + UserInfo.Loc_id + ") " +
"OR (Category.Name like '" + value + "%' and inventory_detail.Quantity > 0 and inventory_detail.loc_id =" + UserInfo.Loc_id + ") ";
dataexe.ExecuteSQL(sql, conn);
DataTable dt = dataexe.GetDataTable(sql, conn);
int currentImage = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dataReader = dt.Rows[i];
Button b = new Button();
//Image i = Image.FromFile(img_directory + dataReader["name"]);
b.Tag = dataReader["Item_id"];
b.Click += new EventHandler(b_Click);
string details = dataReader["Item_id"] +
"\n Name: " + dataReader["name"].ToString() +
"\n Buy price: " + dataReader["cost"].ToString() +
"\n Sell price: " + dataReader["price"].ToString();
b.Name = details;
ImageList il = new ImageList();
il.ColorDepth = ColorDepth.Depth32Bit;
il.TransparentColor = Color.Transparent;
il.ImageSize = new Size(78, 80);
// here i am getting error
il.Images.Add(Image.FromStream(new MemoryStream((byte[]) dataReader["image"])));
// il.Images.Add(Image.FromFile(img_directory + dataReader["image"]));
b.Image = il.Images[0];
b.Margin = new Padding(3, 3, 3, 3);
b.Size = new Size(208, 100);
b.Text.PadRight(4);
b.Text += dataReader["name"].ToString();
b.Text += "\n Price: " + dataReader["price"];
b.Font = new Font("Arial", 9, FontStyle.Bold, GraphicsUnit.Point);
b.TextAlign = ContentAlignment.MiddleLeft;
b.TextImageRelation = TextImageRelation.ImageBeforeText;
flowLayoutPanelItemList.Controls.Add(b);
currentImage++;
}
}
catch (Exception ex)
{
MessageBox.Show("Error " + ex);
}
conn.Close();
}
'''' ''''
I'm not sure why you are using an ImageList
, if there is a reason please let me know. 我不知道为什么你使用的是
ImageList
,如果是有原因的,请让我知道。 That being said, here is a very short (and tested) method which loads an image from a file and assigns it to a button's Image
property. 话虽如此,这是一种非常简短(并经过测试)的方法,该方法从文件加载图像并将其分配给按钮的
Image
属性。 Below it is an adaptation of the first method, using the datareader
as per your code. 下面是根据代码使用
datareader
的第一种方法的改编。 this method has not been tested . 此方法未经测试 。
public void GetImage()
{
MemoryStream stream = new MemoryStream(File.ReadAllBytes(@"C:\Users\Shai Cohen\Pictures\banana.jpg"));
Image image = Image.FromStream(stream);
button1.Image = image;
}
public void GetImageFromDatareader()
{
MemoryStream stream = new MemoryStream((byte[]) dataReader["image"]));
Image image = Image.FromStream(stream);
button1.Image = image;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.