конвертировать загруженный файл в растровое изображение в asp.net - PullRequest
4 голосов
/ 23 мая 2011

У меня есть FileUpload коробка и button. В моем сценарии загружаемые файлы являются файлами изображений. Я хочу преобразовать эти файлы изображений в растровые изображения и временно сохранить их в буфере.

У меня есть функция, которая принимает два растровых ввода и сообщает нам, совпадают ли эти два файла.

Один файл будет получен из элемента управления FileUpload для события ButtonClick, а другое растровое изображение будет считано из базы данных.

Может кто-нибудь сказать мне, как мне преобразовать эти файлы в растровые изображения и передать оба растровых объекта в функцию.

1 Ответ

8 голосов
/ 23 мая 2011

Вы можете получить растровое изображение загруженного изображения следующим образом:

System.Drawing.Bitmap bmpPostedImage = new System.Drawing.Bitmap(userFileUpload.PostedFile.InputStream);

Затем вы получаете сохраненную копию (которая, вероятно, хранится в виде байтового массива, и у вас есть идентификатор для ее получения), а затем конвертируете ее в растровое изображение следующим образом

byte[] byteArrayStoredImage = ImageService.GetImageData(imageID);
MemoryStream imgStream = new MemoryStream(byteArrayStoredImage);
System.Drawing.Bitmap bmpStoredImage = new Bitmap(imgStream);

Имея два растровых изображения (bmpPostedImage и bmpStoredImage), вы можете вызвать функцию для сравнения. Для начала вы можете попробовать эту функцию из http://www.dreamincode.net/code/snippet2859.htm и посмотреть, как она работает. Там могут быть более эффективные функции, чтобы сделать сравнение, попробуйте поиск в Google, что будет забавной попыткой.

EDIT

Найдите ниже код для извлечения изображения из базы данных с предположениями, которые я изложил в комментарии ниже:

    public byte[] GetImageData(string imageID)
    {
                string connectionString = ConfigurationManager.ConnectionStrings["connectionstringname"];
        SqlConnection connection = SqlConnection(connectionString);
        connection.Open();
        SqlCommand command1 = new SqlCommand("select imgfile from myimages where imgname=@imageId", connection);
        SqlParameter myparam = command1.Parameters.Add("@imageId", SqlDbType.NVarChar, 30);
        myparam.Value = imageID;
        byte[] img = (byte[])command1.ExecuteScalar();
        connection.Close();
        return img;
    }

и затем измените ImageService.GetImageData (imageID) на GetImageData (imageID);

Обратите внимание, что обработка ошибок здесь не рассматривается, поэтому, возможно, придется учесть это в вашем конечном коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...