2012-01-12 3 views
2

Можно создать дубликат:
“Parameter not valid” exception loading System.Drawing.ImageSystem.ArgumentException: Параметр не является допустимым

Я вставив изображение в БД.

Вот мой код

public class ImageUtils 
{ 
    const int sizeThumb = 69; 

    public static int uploadImage(int memberid, Image thumbimage) 
    { 
     MemoryStream stream = new MemoryStream(); 
     thumbimage.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp); 
     Byte[] thumbbytes = stream.ToArray(); 

     //int length = Convert.ToInt32(data.Length); 
     //byte[] thumbimage = new byte[length]; 
     //data.Read(thumbimage, 0, length); 
     SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["FMMImages"].ConnectionString); 
     SqlCommand command = new SqlCommand("update Images_temp set thumbimage = @thumbimage where [email protected]", connection); 
     SqlParameter param0 = new SqlParameter("@thumbimage", SqlDbType.Image); 
     param0.Value = thumbbytes; 
     command.Parameters.Add(param0); 

     connection.Open(); 

     object result = command.ExecuteScalar(); 
     connection.Close(); 
     if (result != null) 
     { 
      return System.Convert.ToInt32(result); 
     } 
     else 
     { 
      return 0; 
     } 
    } 

aspx.cs где я звоню uploadimage изображение CroppedWaterMarkImage ......

ImageUtils.uploadImage(memberid, CroppedWaterMarkImage); 

Ошибка в функции uploadimage:

 MemoryStream stream = new MemoryStream(); 
    thumbimage.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp); 
    Byte[] thumbbytes = stream.ToArray(); 

System.ArgumentException: параметр недействителен.

Благодаря ВС

+0

Если вы отлаживаете, какая линия останавливается? – Joe

+0

Если библиотеки баз данных C# похожи на Java, то не передаете ли вы «thumbimage» в конструктор 'SqlParameter' вместо« @thumbimage »? Кроме того, вы, кажется, не устанавливаете значение для параметра «@memberid». – aroth

+0

http://stackoverflow.com/questions/629955/parameter-not-valid-exception-loading-system-drawing-image –

ответ

1

Эти ребята столкнулись с подобной проблемой с изображениями и MemoryStream() из-за утечки памяти:

Эта связь была решена путем вызова System.Drawing.Bitmap вместо System.Drawing.Image:

Либо (утечка памяти/коррупции и/или выбор API) может быть применимо к вашему сценарию.

Также убедитесь, что файл изображения действителен.

Смежные вопросы