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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2016, 00:03   #1
greenisius
Пользователь
 
Регистрация: 06.11.2012
Сообщений: 67
По умолчанию Закодировать картинку BASE64

Здравствуйте. Есть компонент TImage, созданный программно, в котором лежит картинка. Эту картинку нужно закатать в BASE64 и вывести в html файл.

Код:
  
  Img := TImage.Create(nil);
  MemStr := TMemoryStream.Create;
  IdEncoderMIME1:= TIdEncoderMIME.Create(nil);
  Img.Canvas.CopyRect(Img.ClientRect, Image.Canvas,
        Rect(i*SubWidth, j*SubHeight, (i+1)*SubWidth, (j+1)*SubHeight));
  Img.Picture.Bitmap.SaveToStream(MemStr); 
  Output := Output + '<img src="data:image/bmp;base64,'
      + IdEncoderMIME1.Encode(MemStr)
        + '" alt="" height="' + SubHeight.ToString +'" width="' + SubWidth.ToString +'">';
Поток MemStr почему-то пустой, хотя я в него загружаю часть картинки(не нулевая, проверено!)

Со многими структурами работаю впервые, не могу найти ошибку.
Может, есть более простой способ кодирования изображения в base64?

И еще бонусный вопрос. Если запилить base64 для bmp и впихать его в браузер, он корректно отработает?
greenisius вне форума Ответить с цитированием
Старый 05.04.2016, 09:42   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

глянь


Код:
unit DIMimeStreams;

{$I DICompilers.inc}

interface

uses
  {$IFDEF HAS_UNITSCOPE}System.Classes{$ELSE}Classes{$ENDIF};

procedure MimeEncodeStream(
  const InputStream: TStream;
  const OutputStream: TStream);

procedure MimeEncodeStreamNoCRLF(
  const InputStream: TStream;
  const OutputStream: TStream);

procedure MimeDecodeStream(
  const InputStream: TStream;
  const OutputStream: TStream);

procedure MimeEncodeFile(
  const InputFileName: string;
  const OutputFileName: string);

procedure MimeEncodeFileNoCRLF(
  const InputFileName: string;
  const OutputFileName: string);

procedure MimeDecodeFile(
  const InputFileName: string;
  const OutputFileName: string);
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 05.04.2016 в 09:46.
min@y™ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
закодировать txt linkoln_7 C# (си шарп) 1 23.03.2013 22:52
Закодировать изображение Demien Общие вопросы Delphi 7 15.03.2011 18:23
Чем закодировать? mmglipetsk Помощь студентам 7 29.10.2010 21:06
Как получить картинку при наведении на другую картинку (ссылку) seeker1 JavaScript, Ajax 8 04.07.2010 19:42
закодировать текст в С Angelic_fiend Помощь студентам 6 23.05.2010 14:15