Конвертация графических форматов средствами 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"); |