Перейти к содержанию
Fire Monkey от А до Я
  • 0

TBitmap -> TJPEGImage и TgifImage


Steepe_Hare

Вопрос

Скажите, а почему нельзя передать TBitmap объектам TJPEGImage и TgifImage?

    Frame := gif.Add(Bitmap1);

    JPEGImage.Assign(Bitmap1);

Получаю ошибки

Project Project1.exe raised exception class GIFException with message 'Object type not supported for operation'.
Project Project1.exe raised exception class EConvertError with message 'Cannot assign a TBitmap to a TJPEGImage'.

 

Можно как-то конвертнуть? Спасибо заранее.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
1 час назад, Steepe_Hare сказал:

Можно как-то конвертнуть? 

Для конвертации можете использовать TBitmapCodecManager. Например, так я его использую для сохранения файлов в различном формате:
 

var
  aExtention,
  aFileName:    string;
  aFileStream:  TFileStream;
  aSaveParams:  TBitmapCodecSaveParams;
  aSurf:        TBitmapSurface;
  aBitmap:      TBitmap
.....

    aFileStream := TFileStream.Create(aFileName, fmCreate);
    try
      aSurf := TBitmapSurface.Create();
      try
        aSurf.Assign(aBitmap);
        aSaveParams.Quality := 70;
        TBitmapCodecManager.SaveToStream(aFileStream, aSurf, aExtention, @aSaveParams);
      finally
        FreeAndNil(aSurf);
      end;
    finally
      FreeAndNil(aFileStream);
    end;

Для сохранения jpg использую aExtention='.jpg' и т.д.



И почему Вы используете  TJPEGImage и TgifImage? Они разве есть в FMX? TImage.Bitmap читается из файла так:
 

var
  aImage: TImage;
  aFileName: string;
...
aImage.Bitmap.LoadFromFile(aFileName);

 

Ссылка на комментарий
  • 0
  • Модераторы

TBitmap это общий класс для работы с картинками, он всеядный

Это не VCL где нужно подбирать класс под расширение файла

Ссылка на комментарий
  • 0
7 часов назад, ZuBy сказал:

TBitmap это общий класс для работы с картинками, он всеядный

Это не VCL где нужно подбирать класс под расширение файла

А как эту же задачу выполнить в VCL?

Ссылка на комментарий
  • 0
  • Модераторы
1 час назад, Pax Beach сказал:

А как эту же задачу выполнить в VCL?

модули Jpeg, PngImg (для gif не помню как называется), там есть нужные классы

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...