Delphi6 personalでGDIを導入して画像を回転させようとしています。
下記を参考にしました。
http://www.geocities.jp/asumaroyuumaro/program/tips/gdiplus.html
コンポーネントは指示通り http://www.progdigy.com/
のDownloadのGDI plus API からgdiplus.zipをダウンロードしてpasフォルダを
LIBにいれてパスを通しました。
質問は、Jpegの場合、一旦Bitmapに入れてファイルにsaveして、再び
bmpファイルをロードしてbmp :TGPBitmapに入れていますが、
初心者が考えても無駄のようです。Bitmapから直接にbmp :TGPBitmapに
代入する方法を教えていただけませんか。よろしくお願いします。
uses
Jpeg,GDIPAPI,GDIPOBJ ;
procedure TForm1.Button1Click(Sender: TObject);
var
graphics :TGPGraphics;
bmp :TGPBitmap;
Jpg: TJPEGImage;
Bitmap:TBitmap;
begin
if OpenDialog1.Execute then
begin //フォームのTGPGraphicsオブジェクトを取得
graphics := TGPGraphics.Create(Canvas.Handle);
if LowerCase(ExtractFileExt(OpenDialog1.FileName))='.bmp' then
begin //bmpの場合
bmp := TGPBitmap.Create(OpenDialog1.FileName);
end
else
begin //Jpegの場合
Jpg :=TJpegImage.Create ;
Bitmap:=TBitmap.Create;
try
Jpg.LoadFromFile(OpenDialog1.FileName);
Bitmap.Assign(JPG); // <-----ここから無駄?
Bitmap.SaveToFile('Temp.bmp');
bmp := TGPBitmap.Create('Temp.bmp');
finally
Bitmap.Free;
Jpg.Free;
end;
end;
try
bmp.RotateFlip(Rotate90FlipNone);//90°回転
graphics.DrawImage(bmp, 20, 20);
finally
bmp.Free;
graphics.Free;
end;
end;
end;
GDI+のTGPBitmapは
BMP, JPEG, PNG, GIF, TIFF, WMF, EMFをそのままサポートしています。
何もせず
bmp := TGPBitmap.Create('aaa.jpg');
で開けますよ。
monaa さんありがとうございました。
強力なコンポーネントだと書いてありましたが
これほどとは、
ということはまだまだ何かできますね。調べてみます。
感謝<(_ _)>
ツイート | ![]() |