Преобразование пути изображения в строку base64
Как преобразовать изображение в строку base64 в C #?
Например, у меня есть путь к изображению C:/image/1.gif
и хотел бы получить data:image/gif;base64,/9j/4AAQSkZJRgABAgEAYABgAAD..
вернулся.
- Метод Image.FromStream () возвращает исключение Invalid Argument
- Браузер не может получать / находить относительные ресурсы, такие как CSS, изображения и ссылки при вызове сервлета, который пересылает JSP
- Изображение слишком малое изображение DrawImage
- Как сохранить и получить изображение на моем сервере в java webapp
- Unity load medias из папки и отображения на RawImage
- Преобразование из двоичных данных в элемент управления изображением в ASP.NET
- Как связать MemoryStream с asp: управление изображениями?
- Сохранить pdf в jpeg с помощью c #
- Замена текста H1 на изображение логотипа: лучший способ для SEO и доступности?
- Преобразование PDF в миниатюру в Java
- Невозможно прочитать изображение в формате JPEG с помощью ImageIO.read (Файл)
- bytearray to image asp.net
- Как освободить память после того, как BitmapImage больше не нужен?
Попробуй это
using (Image image = Image.FromFile(Path)) { using (MemoryStream m = new MemoryStream()) { image.Save(m, image.RawFormat); byte[] imageBytes = m.ToArray(); // Convert byte[] to Base64 String string base64String = Convert.ToBase64String(imageBytes); return base64String; } }
Получите представление байтового массива ( byte[]
) изображения, затем используйте Convert.ToBase64String()
, st. как это:
byte[] imageArray = System.IO.File.ReadAllBytes(@"image file path"); string base64ImageRepresentation = Convert.ToBase64String(imageArray);
Чтобы преобразовать изображение base4 в System.Drawing.Image:
var img = Image.FromStream(new MemoryStream(Convert.FromBase64String(base64String)));
Поскольку большинство из нас, как oneliners:
Convert.ToBase64String(File.ReadAllBytes(imageFilepath));
Если вам это нужно как массив байтов Base64:
Encoding.ASCII.GetBytes(Convert.ToBase64String(File.ReadAllBytes(imageFilepath)));
Это class, который я написал для этой цели:
public class Base64Image { public static Base64Image Parse(string base64Content) { if (string.IsNullOrEmpty(base64Content)) { throw new ArgumentNullException(nameof(base64Content)); } int indexOfSemiColon = base64Content.IndexOf(";", StringComparison.OrdinalIgnoreCase); string dataLabel = base64Content.Substring(0, indexOfSemiColon); string contentType = dataLabel.Split(':').Last(); var startIndex = base64Content.IndexOf("base64,", StringComparison.OrdinalIgnoreCase) + 7; var fileContents = base64Content.Substring(startIndex); var bytes = Convert.FromBase64String(fileContents); return new Base64Image { ContentType = contentType, FileContents = bytes }; } public string ContentType { get; set; } public byte[] FileContents { get; set; } public override string ToString() { return $"data:{ContentType};base64,{Convert.ToBase64String(FileContents)}"; } } var base64Img = new Base64Image { FileContents = File.ReadAllBytes("Path to image"), ContentType="image/png" }; string base64EncodedImg = base64Img.ToString();
Вы можете использовать путь Server.Map
для предоставления относительного пути, а затем вы можете либо создать изображение с использованием преобразования base64
либо просто добавить строку base64
в image src
.
byte[] imageArray = System.IO.File.ReadAllBytes(Server.MapPath("~/Images/Upload_Image.png")); string base64ImageRepresentation = Convert.ToBase64String(imageArray);
Таким образом, это проще, когда вы передаете изображение, а затем передаете формат.
private static string ImageToBase64(Image image) { try { var imageStream = new MemoryStream(); image.Save(imageStream, System.Drawing.Imaging.ImageFormat.Bmp); imageStream.Position = 0; var imageBytes = imageStream.ToArray(); var ImageBase64 = Convert.ToBase64String(imageBytes); return ImageBase64; } catch (Exception ex) { return "Error converting image to base64!"; } }
Вы можете преобразовать его так
string test = @"C:/image/1.gif"; byte[] bytes = System.Text.ASCIIEncoding.ASCII.GetBytes(test); string base64String = System.Convert.ToBase64String(bytes); Console.WriteLine("Base 64 string: " + base64String);
Вывод
QzovaW1hZ2UvMS5naWY=
Что-то вроде того
Function imgTo64(ByVal thePath As String) As String Dim img As System.Drawing.Image = System.Drawing.Image.FromFile(thePath) Dim m As IO.MemoryStream = New IO.MemoryStream() img.Save(m, img.RawFormat) Dim imageBytes As Byte() = m.ToArray img.Dispose() Dim str64 = Convert.ToBase64String(imageBytes) Return str64 End Function