Ежедневник IT-ка
130 subscribers
24 photos
4 videos
1 file
44 links
Программируем на практике!!
По вопросам по поводу проектов: @vladimir_dzen
Download Telegram
​​Необходимо передавать картинку Post/Get запросами. Подумав, а почему не передавать с помощью кодировки base64?

Пример: №1 (картинку в base64):

1. Путь к нашей картинке и переменную для нашей кодировки base64(тип данных string).

string pathFile = "D:\1_picture.jpeg";
string base64String = null;

2. Создаём кодировку base64 из нашей картинки, как строку(тип данных string).

2.1. Рекомендую использовать оператор "using" - для того, чтобы правильно освобождать,сбрасывать,удалять неуправляемые ресурсы(аналог метода Dispose)

2.2. Получаем нашу картинку из файла.

using (Image image = Image.FromFile(pathFile)
{
2.3. Для чтения/записи данных в память, в виде массива, используя класс MemoryStream. 

using (MemoryStream m = new MemoryStream())
{
2.4. Сохраняем нашу картинку в экземпляр класса MemoryStream.

image.Save(m, image.RawFormat);

2.5. Получаем массив для дальнейшей конвертации.

byte[] imageBytes = m.ToArray();

2.6. Получаем кодировку картинки в base64.

base64String = Convert.ToBase64String(imageBytes);
}
}

3. Полученную строку base64String, уже можем передавать, сохранять и делать с ней что угодно.

3.1. Сервис для просмотра полученной картинки из кодировки base64(тип данных string)

Продолжение следует....

#Csharp, #base64

Пример кодировки.
​​В предыдущем примере рассмотрел случай кодирования картинку в base64.

Теперь рассмотрим обратный случай.

Пример: №2 (base64 в картинку):

1. Инициализируем новые переменные: путь к нашей картинке и кодировку base64.

string pathFileNew = "D:\1_pictureCopy.jpeg";
string base64StringNew = base64String(полученная кодировка base64 из пред. примера);

2. Получаем массив из переменной base64StringNew.

byte[] imgBytes = Convert.FromBase64String(base64StringNew);

3. Используем оператор "using"(рекомендую) для работы с картинкой.

using (var imageFile = new FileStream(pathFileNew, FileMode.Create))
{

3.1. Создаём картинку из полученного массива и сохраняем её, согласно нашего пути (pathFileNew).

imageFile.Write(imgBytes, 0, imgBytes.Length);
imageFile.Flush();
}

Все эти случаи в практике используются довольно часто: сервисы для решения каптч, создание сайтов, работа с Б.Д.

Кодирование и декодирование в base64 - это очень полезная вещь.

#Csharp, #base64

Результаты кодирования и декодирования.