Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2021, 00:07   #1
noveek
Пользователь
 
Регистрация: 26.05.2015
Сообщений: 56
По умолчанию Base64 to image

Здравствуйте, не получается декодировать base64 в изображение stream read error картинку парсю без data:image/jpeg;base64,
на некоторых картинках работает на некоторых нет (((

Код:
uses
jpeg, IdCoderMIME, NativeJpg

procedure Base64ToStream(ABase64: String);
var
  AStream: TMemoryStream;
  S : AnsiString;
  jpeg: TsdJpegGraphic;
  Decoder : TIdDecoderMime;
begin
    jpeg:=TsdJpegGraphic.Create;
    AStream:=TMemoryStream.Create;
    Decoder := TIdDecoderMime.Create(nil);
    S:=DecodeString(TRIM(ABase64));
    Astream.Position:=0;
    Astream.WriteBuffer(s[1],Length(s)*SizeOf(Char));
    Astream.Position:=0;
    jpeg.CompressionQuality:=100;
    jpeg.GrayScale:=true;
    jpeg.image.LoadFromStream(Astream);
    jpeg.CompressionQuality:=100;
    jpeg.GrayScale:=true;
    jpeg.SaveToFile(Extractfilepath(paramstr(0))+'1234.jpeg'); 
    form1.Image1.Picture.Assign(jpeg); // ОШИБКА
    //Astream.SaveToFile(Extractfilepath(paramstr(0))+'1234.JPG');
    Freeandnil(Decoder);
    Freeandnil(jpeg);
    Freeandnil(AStream);
end;
Картинка в base64 во вложении:
Вложения
Тип файла: txt image.txt (16.9 Кб, 5 просмотров)

Последний раз редактировалось noveek; 10.12.2021 в 00:11.
noveek вне форума Ответить с цитированием
Старый 10.12.2021, 13:17   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Это потому что у вас сервер png подсовывает за место jpeg. Парсить тело картинки и определять формат по нему. А далее кейс на нужный класс-картинки.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 10.12.2021, 14:44   #3
noveek
Пользователь
 
Регистрация: 26.05.2015
Сообщений: 56
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Это потому что у вас сервер png подсовывает за место jpeg. Парсить тело картинки и определять формат по нему. А далее кейс на нужный класс-картинки.
Так а в теле же data:image/jpeg;base64,
noveek вне форума Ответить с цитированием
Старый 10.12.2021, 15:43   #4
noveek
Пользователь
 
Регистрация: 26.05.2015
Сообщений: 56
По умолчанию

Может есть компонент какой любой формат изображения переконвертировать в bmp
noveek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование картинки из одного Image в другой Image Oleg_SS Общие вопросы Delphi 7 22.05.2014 07:30
При столкновении между image переместить другой Image Алексей_2012 Общие вопросы Delphi 1 07.03.2013 09:32
Плавно убрать Image или Image+AlphaBlend ViniPux1112 Мультимедиа в Delphi 1 10.12.2012 23:55
EPNGMissingMultipleIDAT. This PNG Image is invalid because it has missing image parts kardinal94 Общие вопросы Delphi 0 08.10.2010 20:31
Вопрос по Image (скачанная картинка не хочет выводиться в Image) Radnor Мультимедиа в Delphi 2 06.07.2009 02:20