Vikram Singh Rathaur Ответов: 2

Как преобразовать строку в изображение


Я конвертирую строку( div html content) в изображение. я получаю ошибку '
Parameter is not valid.
'

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

string str = "<div>This is a test Message</div>";

       byte[] byt = System.Text.Encoding.UTF8.GetBytes(str);

       base64String = Convert.ToBase64String(byt);

       Base64ToImage(base64String).Save(Server.MapPath("~/images/Hello.jpg"));



public System.Drawing.Image Base64ToImage(string base64String)
   {
       // Convert Base64 String to byte[]
       byte[] imageBytes = Convert.FromBase64String(base64String);
       MemoryStream ms = new MemoryStream(imageBytes, 0,
         imageBytes.Length);

       // Convert byte[] to Image
       ms.Write(imageBytes, 0, imageBytes.Length);
       System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true);
       return image;
   }

2 Ответов

Рейтинг:
2

OriginalGriff

Изображения не могут быть созданы только для какой-либо старой строки: это структурированные файлы, которые содержат много "упаковочной информации", которая относится к фактическим данным изображения, но не является фактическими пикселями.

Вы не можете просто предположить, что любая строка, переведенная в Base64, будет действительным изображением: это не так! А когда это не так, вы получаете ошибку "параметр недействителен", потому что данных, которые он ожидает и должен "декодировать" данные изображения в фактическое изображение, которое вы можете отобразить, просто нет!

Попробуйте прочитать файл образа с диска в виде массива байтов, преобразовать его в Base64, а затем обработать в образ.


Vikram Singh Rathaur

Мое требование состоит в том, чтобы отправить изображение(которое мы хотим преобразовать из html) по электронной почте

OriginalGriff

Почему бы просто не прикрепить файл изображения?
Если вы не можете этого сделать, то считайте его как массив байтов, преобразуйте его в Base64 и отшлифуйте таким образом. Как именно вы его отправляете, зависит от того, что вы хотите с ним сделать, когда придет письмо, но базовым HTML-встраиванием будет тег img:

ИМГ АЛТ="мои изображения" в src="данные:изображение/jpeg;base64, и...данные в кодировке base64..."

Vikram Singh Rathaur

некоторое время он не загружается автоматически в почтовый ящик

Рейтинг:
1

F-ES Sitecore

string str = "This is a\r\n test Message";

// create a dummy Bitmap just to get the Graphics object
Bitmap img = new Bitmap(1, 1);
Graphics g = Graphics.FromImage(img);

// The font for our text
Font f = new Font("Arial", 14);

// work out how big the text will be when drawn as an image
SizeF size = g.MeasureString(str, f);

// create a new Bitmap of the required size
img = new Bitmap((int)Math.Ceiling(size.Width), (int)Math.Ceiling(size.Height));
g = Graphics.FromImage(img);

// give it a white background
g.Clear(Color.White);

// draw the text in black
g.DrawString(str, f, Brushes.Black, 0, 0);

// save the image
img.Save(@"c:\temp\Hello.jpg");