//---------------------------------------------------------------------------
/**
* BitmapファイルをPNGファイルに変換する。
*/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Bitmapファイルを選択する
if (!OpenDialog1->Execute()) return;
//Bitmapファイルを開く
Graphics::TBitmap* bitmap = new Graphics::TBitmap();
bitmap->LoadFromFile(OpenDialog1->FileName);
//PNGファイルに変換して保存する
TPNGObject* png = new TPNGObject();
png->Assign(bitmap);
png->SaveToFile(ChangeFileExt(OpenDialog1->FileName, ".png"));
delete png;
delete bitmap;
}
TPNGObjectは、TBitmapやTJPEGImageと同じ感覚で使えます。
//---------------------------------------------------------------------------
/**
* PNGファイルを表示する
*/
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//PNGファイルを選択する
if (!OpenDialog1->Execute()) return;
//PNGファイルを表示する
Image1->Picture->LoadFromFile(OpenDialog1->FileName);
}
なぜか、TPicture::LoadFromFile()でPNGファイルが読み込めるようになりました。
C++Builder 2009では標準でPNGファイルを扱うことができるようになりました。
#include <pngimage.hpp>
#pragma link "vclimg.lib"
TPngImage* png = new TPngImage();
//PNGファイルの読み込み
png->LoadFromFile("C:\sample.png");
//他の形式の画像をコピー
TBitmap* bmp = new TBitmap();
bmp->LoadFromFile("C:\sample.bmp");
png->Assign(bmp);
//ファイルに保存
png->SaveToFile("C:\sample.png");
C++Builder2009 Update3で「#pragma link "vclimg.lib"」は必要なくなりました。
#include <pngimage.hpp>
TPngImage* png = new TPngImage();
//PNGファイルの読み込み
png->LoadFromFile("C:\sample.png");
//他の形式の画像をコピー
TBitmap* bmp = new TBitmap();
bmp->LoadFromFile("C:\sample.bmp");
png->Assign(bmp);
//ファイルに保存
png->SaveToFile("C:\sample.png");