Convertir en Tableau d'Octets de l'Image: Paramètre n'est pas valide

Je suis de stocker des images dans une base de données et que vous souhaitez convertir de tableau d'octets de l'image. Je n'ai pas de problème de conversion d'un objet de tableau d'octets, mais j'obtiens une erreur "Paramètre n'est pas valide" lorsque vous essayez de convertir à partir du tableau d'octets de l'image. L'objet que je transmets à ma méthode est à partir d'un dataset ligne.

Procédure stockée

USE [----------------]
GO
/****** Object:  StoredProcedure [dbo].[usp_imageloader_add_test]    Script Date: 01/16/2012    09:19:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER   procedure [dbo].[usp_imageloader_add_test]
@p_Image Image

as 

INSERT into Test_Images VALUES(@p_Image)

Télécharger le Fichier de contrôle /convertir le fichier de l'Image du tableau d'octets et d'enregistrer les données dans la base de données

 protected void btnUpload_Click(object sender, EventArgs e)
    {
        if (ctrlUpload.PostedFile != null)
        {
            if (ctrlUpload.PostedFile.ContentLength > 0)
            {
                //Get Posted File
                HttpPostedFile objHttpPostedFile = ctrlUpload.PostedFile;

                //Find its length and convert it to byte array
                int ContentLength = objHttpPostedFile.ContentLength;

                //Create Byte Array
                byte[] bytImg = new byte[ContentLength];

                //Read Uploaded file in Byte Array
                objHttpPostedFile.InputStream.Read(bytImg, 0, ContentLength);

                using (SqlConnection dbConnection = new SqlConnection(app_settings.sql_conn_string_db))
                {
                    try
                    {
                        string sql = "usp_imageloader_add_test";
                        SqlCommand cmd = new SqlCommand(sql, dbConnection);
                        cmd.CommandType = System.Data.CommandType.StoredProcedure;
                        cmd.Parameters.AddWithValue("@p_Image", bytImg).SqlDbType = SqlDbType.Image;
                        cmd.Connection.Open();
                        cmd.ExecuteNonQuery();
                        cmd.Connection.Close();
                    }


                    catch (Exception ex)
                    {
                        ex.Message.ToString();
                    }
                }
            }
        }
    }

Convertit l'objet en tableau d'octets et de l'image

 private System.Drawing.Image ObjToImg(object obj)
    {
        byte[] byteArray;
        if (obj == null)
            return null;
        else
        {
            BinaryFormatter bf = new BinaryFormatter();
            MemoryStream ms = new MemoryStream();
            bf.Serialize(ms, obj);
            byteArray = ms.ToArray(); //Byte Array
            ms.Close();

            ms = new MemoryStream(byteArray, 0, byteArray.Length);
            ms.Seek(0, SeekOrigin.Begin);
            System.Drawing.Image returnImage = System.Drawing.Image.FromStream(ms);
            return returnImage;
        }

Toutes les idées seraient utiles.

stackoverflow.com/a/6712677/284240 sauvegarder les données binaires dans un fichier et de voir comment un éditeur d'image répond

OriginalL'auteur nick gowdy | 2012-01-13