Если у вас есть строка, в которой байты изображения действительно находятся в base64 кодировке , то вы хотите вызвать статический метод FromBase64String класса Convert , чтобы получить массив байтов :
byte[] bytes = Convert.FromBase64String("base 64 string");
Оттуда вы хотите создать новый экземпляр класса MemoryStream с байтами:
MemoryStream ms = new MemoryStream(bytes);
Наконец, последний вызов, который вы бы сделали, - это статический метод FromStream класса Image , чтобы получить Image , с которым вы можете работать:
Image image = Image.FromStream(ms);
Обратите внимание, что в разделе «Примечания» для документации по методу FromStream класса Image вы должны держать экземпляр Stream (из которого происходит MemoryStream) открытым, пока вы используете Image.
Также обратите внимание, что хотя реализация MemoryStream не использует неуправляемые ресурсы и не обязательно требует вызов Dispose , это кодирование против реализации детали, в отличие от деталей контракта , которые определяются классом Stream, который указывает, что вы должны вызывать Dispose, когда закончите с ним.
Причина, по которой вы хотите это сделать, заключается в том, что Stream для изображения является другим подклассом. Например, если используется экземпляр FileStream , вы должны вызвать метод Dispose, когда закончите с ним (вместе с методом Dispose для класса Image, также).