Конвертация графических форматов средствами Borland C++ Builder

В плане преобразования форматов графических файлов мы уже рассматривали преобразование внутренней структуры .bmp файлов. Здесь речь пойдет о форматах, организованных по отличной от ранее рассмотренной внутренней структуры организации файлов форматов DIB. Наиболее известные из них форматы .jpeg, .jpg, .ico, .gif. Не вникая в особенности форматов, здесь будут показаны средства Borland C++ Builder с помощью которых можно провести конвертацию форматов. Формат .gif требует особого внимания как формат контейнер изображений и ему в дальнейшем будет посвящен отдельный раздел, но, несмотря на наличие дополнительных для Borland C++ Builder и нестандартных компонент для работы с форматом, там где применяется формат .gif, автор предпочитает включить в программу компонент TCppWebBrowser.

В силу этого в данном параграфе рассмотрим несколько вопросов, которые наиболее часто требуются в практике:

В начало

Преобразование .jpg в .bmp.

Для того, чтобы преобразовать рисунок в формате .jpg к формату .bmp, его предварительно необходимо загрузить в какой либо компонент или графический элемент, поддерживающий формат .bmp. Например, в следующем коде файл формата .jpg загружается (преобразуется к) в графический объект Graphics::TBitmap.

void __fastcall
TForm1::Button1Click(TObject *Sender)
{
 Graphics::TBitmap  *ptBmp;
 TJPEGImage         *ptJpg=new TJPEGImage;
 ptBmp=new Graphics::TBitmap;
 //Загружаем изображение .jpg
 ptJpg->LoadFromFile("a.jpg");
 //Перебрасываем его в TBitmap
 ptBmp->Width=ptJpg->Width;
 ptBmp->Height=ptJpg->Height;
 ptBmp->Assign(ptJpg);
 //Можно сохранить изображение в формате .bmp
 ptBmp->SaveToFile("a.bmp");
 //Можно его нарисовать
 Canvas->Draw(0,0,ptBmp);
 delete  ptJpg;
 delete  ptBmp;
}

Еще проще использовать компонент TImage

void __fastcall
TForm1::Button1Click(TObject *Sender)
{
 Graphics::TBitmap  *ptBmp;
 ptBmp=new Graphics::TBitmap;
 //Можно не только загрузить изображение 
 //и если установить параметры и отобразить
 //в натуральный размер
 Image1->AutoSize=true;
 Image1->Picture->LoadFromFile("a.jpg");
 ptBmp->Assign(Image1->Picture->Graphic);
 //Можно сохранить изображение в формате .bmp
 ptBmp->SaveToFile("a.bmp");
 //Можно его нарисовать
 Canvas->Draw(0,0,ptBmp);
}

Естественно предпологается, что формат .jpg и методы работы с ним доступны приложению.

#include           <Jpeg.hpp>

В начало

Преобразование .bmp. в .jpg.

Для преобразования графическо образа в .jpg формат достаточно выполнить обратное преобразование.

 TJPEGImage    *tJpg=new TJPEGImage;
 Image1->AutoSize=true;
 Image1->Picture->LoadFromFile("a.bmp");
 tJpg->Assign(Image1->Picture->Graphic);
 //Степень сжатия (качество) 1..100
 tJpg->CompressionQuality = 50;
 //Упаковать графику
 tJpg->Compress();
 //И можно сохранить
 tJpg->SaveToFile("a.jpg");
 delete tJpg;

В начало

Преобразование .ico в .bmp.

void __fastcall 
TForm1::Button1Click(TObject *Sender)
{
 TIcon      *tIcon;
 tIcon = new TIcon;
 AnsiString vasS="filename";
 tIcon->LoadFromFile(vasS);
 Graphics::TBitmap *tBmp=new Graphics::TBitmap;
 tBmp->Height = tIcon->Height;
 tBmp->Width = tIcon->Width;
 tBmp->Canvas->Draw(0,0,tIcon);
 if(vasS.LastDelimiter(".") != 0)
   vasS=vasS.SubString(1,vasS.LastDelimiter(".")-1);
 Image1->Picture->Assign(tBmp);
 Image1->Picture->SaveToFile(vasS+".bmp");
 delete tIcon;
 delete tBmp;
}

В начало

Преобразование .bmp в .ico.

  TIcon      *tIcon;
  tIcon = new TIcon();
  Graphics::TBitmap  *tBmp;
  tBmp=new Graphics::TBitmap;
  AnsiString vasS="filename";
  tBmp->LoadFromFile(vasS);
  TImageList *tIml=new TImageList(NULL);
  tIcon->Width=16;
  tIcon->Height=16;
  tIml->Add(tBmp,tBmp);
  tIml->GetIcon(0,tIcon);
  tIcon->SaveToFile(vasS+".ico");



В начало главы

В начало раздела

Домой