2014-09-09 3 views
1

У меня есть изображение/jped код base64, как это,Image/Jpeg Base 64 изображений

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA...... 

мне нужно, конвертировать изображения этого кода и сохраните файл как файл в формате JPEG. И я понял форму Windows (C#). Вставьте в текстовое поле и кнопку. Вставьте базовый код 64 (код выше) в текстовое поле и нажмите кнопку.

private void button1_Click(object sender, EventArgs e) 
    { 
     if (!string.IsNullOrEmpty(textBox1.Text)) 
     { 
      string imageDataParsed = textBox1.Text.Substring(textBox1.Text.IndexOf(',') + 1); 
      byte[] imageBytes = Convert.FromBase64String(imageDataParsed); 

      MemoryStream ms1 = new MemoryStream(imageBytes); 
      Image img = Image.FromStream(ms1); 
      img.Save(Application.StartupPath + "\\Images\\1.jpg", ImageFormat.Jpeg); 
     } 
    } 

Файл save как jpeg. Но этот файл выглядит так на Windows Photo Viewer enter image description here

Но когда я запускаю в Google Chrome этот код базы 64, проблем нет. Просмотр снимков в браузере Google Chrome.

Резюме мой вопрос, мне нужен код base64 для изображения и сохранить этот файл на моем сервере как файл jpeg. Как я могу решить эту проблему? Спасибо.

+0

Являются ли какие-либо части base64 UrlEncoded или имеют другие специальные символы при выходе из текстового поля? – xDaevax

+0

До сих пор похоже, что вы просто не получаете полную строку. Обязательно обновите свой пример с помощью строки строки, которая является * small * и * complete * примером строки base64, которая показывает поведение, которое вы наблюдаете. –

+0

Этот код работает для меня. Я также пробовал его с усеченной базой Base64 (я думал, что это ваша проблема), но я получил исключение FormatException, и изображение не было сохранено. – kol

ответ

1

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

byte[] newfile = Convert.FromBase64String(data); 
File.WriteAllBytes(@"C:\path\to\file.jpg", newfile); 
+0

Да, ты прав. Я тестировал сейчас, не решил проблему с моей картинкой? :( – aynakolik

+0

Тогда ваше изображение base64 является поврежденным jpeg-изображением или, может быть, оно не предполагается jpeg, а скорее png или gif? Вы должны проверить заголовок в шестнадцатеричном редакторе. Я знаю, что другие форматы изображений могут отображаться в Window Photo Viewer с неправильными расширениями но срываться. – SSpoke

Смежные вопросы