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