aaaaaaaaaaa222 Ответов: 1

Изображение в байт в строку


- Привет! Теперь я могу сохранять и просматривать изображение из БД в виде байта, теперь мне нужно преобразовать его в строку, и я получаю ошибку. Любая помощь или коррекция будут оценены по достоинству. Спасибо.

Что я уже пробовал:

частный недействительными обработчика button1_click(объект отправителя, EventArgs в электронной)
{
MyImage изображение = имя picturebox1.Изображения;
байт [] данных;
использование (MemoryStream ms = новый MemoryStream())
{
мой образ.Сохранить (ms, System.Рисование.Изображений.ImageFormat.Jpeg);
данные = МС.Метод toArray();
строка s3 = преобразовать.ToBase64String(данные);
данные = конвертировать.FromBase64String(С3);
}



против.Открыть();
КМД = новая команда sqlcommand("вставить в Кенни (ИД,фотография) значения (@ИД@им)", кон);
{
УМК.Параметры.AddWithValue ("@IM", s3);
УМК.Параметры.AddWithValue ("@id", textBox1. Text);
УМК.Метод executenonquery();
}
против.Закрывать();
}

Richard MacCutchan

Почему вы конвертируете данные в s3, а затем сразу же конвертируете s3 в данные? Решите, что вам нужно: байт[] или строка. А также внимательно прочитайте предложения OriginalGriff.

1 Ответов

Рейтинг:
9

OriginalGriff

Пожалуйста, сделайте себе одолжение и просмотрите основы C#: это уже третий раз, когда я вижу этот код в эти выходные, и то, что вы делаете, - это фундаментальная ошибка, а затем игнорирование сообщения об ошибке, которое вы получаете.
s3 является локальной переменной в button1_Click метод:

private void button1_Click(object sender, EventArgs e)
    {
    Image myImage = pictureBox1.Image;
    byte[] data;
    using (MemoryStream ms = new MemoryStream())
        {
        myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        data = ms.ToArray();
        string s3 = Convert.ToBase64String(data);
        data = Convert.FromBase64String(s3);
        }
И его область действия ограничена блоком кода, в котором он объявлен: содержащим набор фигурных скобок.
Как таковой, она не существует вне вашего сознания. using блокируйте, и вы получите ошибку компилятора.
Переместите определение за пределы using блок, и он будет компилироваться:
private void button1_Click(object sender, EventArgs e)
    {
    Image myImage = pictureBox1.Image;
    byte[] data;
    string s3;
    using (MemoryStream ms = new MemoryStream())
        {
        myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        data = ms.ToArray();
        s3 = Convert.ToBase64String(data);
        data = Convert.FromBase64String(s3);
        }