PDA

View Full Version : مشکل در ذخیره عکس



arefba
دوشنبه 16 اسفند 1389, 12:45 عصر
بسم الله الرحمن الرحیم
دوستان من در بانک اطلاعاتیم عکس هام رو ذخیره می کنم
اما وقتی که اونا رو لود می کنم در یک پیکچر باکس نمی تونم ذخیرشون کنم
و با خطای
A generic error occurred in gdi+

مواجه میشم
کسی می دونه باید چیکار کنم
دستوراتی که استفاده می کنم

newImage.Save(@"d:\soft1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
System.Diagnostics.Process.Start(@"d:\");

arefba
دوشنبه 16 اسفند 1389, 16:05 عصر
هیچکی نمیدونه ؟؟؟؟

ali.rezaei7
دوشنبه 16 اسفند 1389, 16:48 عصر
سلام. تصوير رو به چه صورت داخل آبجكت load مي كنيد؟ از stream? اگه كد مربوط به load تصوير رو تو سايت بزاريد راحتتر ميشه به نتيجه رسيد.

arefba
دوشنبه 16 اسفند 1389, 21:34 عصر
برای لود عکس از کد زیر استفاده می کنم


object image = dataGridView1.Rows[e.RowIndex].Cells["pic"].Value;
try
{
//Get image data from gridview column.
byte[] imageData = (byte[])image;
//Initialize image variable
newImage = null;
//Read image data into a memory stream
using (MemoryStream ms = new MemoryStream(imageData, 0, imageData.Length))
{
ms.Write(imageData, 0, imageData.Length);

//Set image variable value using memory stream.
newImage = Image.FromStream(ms, true);
}

//set picture
pictureBox1.Image = newImage;
// System.IO.File.Create("d:\\");

}
حالا می خوام این عکس رو یه جایی ذخیره کنم
اما خطایی که میگم رو میده

arefba
دوشنبه 16 اسفند 1389, 21:38 عصر
برای لود عکس از کد زیر استفاده می کنم


object image = dataGridView1.Rows[e.RowIndex].Cells["pic"].Value;
try
{
//Get image data from gridview column.
byte[] imageData = (byte[])image;
//Initialize image variable
newImage = null;
//Read image data into a memory stream
using (MemoryStream ms = new MemoryStream(imageData, 0, imageData.Length))
{
ms.Write(imageData, 0, imageData.Length);

//Set image variable value using memory stream.
newImage = Image.FromStream(ms, true);
}

//set picture
pictureBox1.Image = newImage;
// System.IO.File.Create("d:\\");

}
حالا می خوام این عکس رو یه جایی ذخیره کنم
اما خطایی که میگم رو میده

ali.rezaei7
سه شنبه 17 اسفند 1389, 00:24 صبح
مشكل از كدهاي نوشته شده است به ويژه خط پنجم. آبجكتي كه Value بر ميگردونه از نوع Image هست و به علت Casting نادرست در خط 5، برنامه دچار Run-Time Error ميشه و طبيعتا بقيه دستورات هم عمل نمي كنه.
اصلا نيازي به اين كدنويسي ها نيست. فكر مي كنم قطعه كد زير مشكلتونو حل كنه:

Image image=
(Image)dataGridView1["pic", e.RowIndex].Value;
pictureBox1.Image = image;
image.Save(@"D:\soft1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

arefba
سه شنبه 17 اسفند 1389, 01:25 صبح
دوست عزیز وقتی من عکسی رو وارد بانک می کنم از روش زیر استفاده می کنم
که مسیر عکس رو می گیرم و بایتی ذخیره می کنم



byte[] ReadFile(string sPath)
{
//Initialize byte array with a null value initially.
byte[] data = null;

//Use FileInfo object to get file size.
FileInfo fInfo = new FileInfo(sPath);
long numBytes = fInfo.Length;

//Open FileStream to read file
FileStream fStream = new FileStream(sPath, FileMode.Open, FileAccess.Read);

//Use BinaryReader to read file stream into byte array.
BinaryReader br = new BinaryReader(fStream);

//When you use BinaryReader, you need to supply number of bytes to read from file.
//In this case we want to read entire file. So supplying total number of bytes.
data = br.ReadBytes((int)numBytes);
return data;
}

حالا وقتی از روش شما استفاده می کنم خطا میده و میگه بایت رو چطور ایمیج کنم
اگه راه بهتری بلدین بگین ممنون میشم

ali.rezaei7
سه شنبه 17 اسفند 1389, 09:01 صبح
سلام. كد زير نبايد ايرادي داشته باشه:

MemoryStream ms=
new MemoryStream((byte[])dataGridView1["pic", e.RowIndex].Value);
Image img = Image.FromStream(ms,true);
pictureBox1.Image = img;
img.Save("D:\\soft1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);