if GetAsynckeyState(VK_SHIFT) < 0 then begin
….
end;
画像回転
type
TRGBArray = array[0 .. 0] of TRGBTriple;
PRGBArray = ^TRGBArray;
// 左回転サンプル
procedure TForm1.Button1Click(Sender: TObject);
var
Src, Dest: TBitmap;
Row, Col: Integer;
SrcRow, DestRow: PRGBArray;
Offset: Integer;
begin
Src := TBitmap.Create;
Dest := TBitmap.Create;
try
// Image1からSrcにハンドルを移す
Src.Handle := Image1.PIcture.Bitmap.ReleaseHandle;
// PixelFormatを24bitに設定
Src.PixelFormat := pf24bit;
Dest.PixelFormat := pf24bit;
// Destへ領域をコピー(幅と高さをクロス)
Dest.Height := Src.Width;
Dest.Width := Src.Height;
try
// Src水平方向のループ
for Row := 0 to Src.Height -1 do
begin
SrcRow := Src.ScanLine[Row];
// Src垂直方向のループ
for Col := 0 to Src.Width -1 do
begin
// Destを下からセットするためのオフセット
Offset := (Dest.Height -1) – Col;
// Destの配列をクロスさせる
DestRow := Dest.ScanLine[Offset];
// 配列をセットする
DestRow[Row].rgbtRed := SrcRow[Col].rgbtRed;
DestRow[Row].rgbtGreen := SrcRow[Col].rgbtGreen;
DestRow[Row].rgbtBlue := SrcRow[Col].rgbtBlue;
end;
end;
// 成功した場合、Destのハンドルを返す
Image1.Picture.Bitmap.Handle := Dest.ReleaseHandle;
except
// 失敗した場合、Srcのハンドルを返す
Image1.Picture.Bitmap.Handle := Src.ReleaseHandle;
end;
finally
Src.Free;
Dest.Free;
end;
end;
// 右回転サンプル
procedure TForm1.Button2Click(Sender: TObject);
var
Src, Dest: TBitmap;
Row, Col: Integer;
SrcRow, DestRow: PRGBArray;
Offset: Integer;
begin
Src := TBitmap.Create;
Dest := TBitmap.Create;
try
// Image1からSrcにハンドルを移す
Src.Handle := Image1.PIcture.Bitmap.ReleaseHandle;
// PixelFormatを24bitに設定
Src.PixelFormat := pf24bit;
Dest.PixelFormat := pf24bit;
// Destへ領域をコピー(幅と高さをクロス)
Dest.Height := Src.Width;
Dest.Width := Src.Height;
try
// Src水平方向のループ
for Row := 0 to Src.Height -1 do
begin
SrcRow := Src.ScanLine[Row];
// Destを右からセットするためのオフセット
Offset := (Dest.Width -1) – Row;
// Src垂直方向のループ
for Col := 0 to Src.Width -1 do
begin
// Destの配列をクロスさせる
DestRow := Dest.ScanLine[Col];
// 配列をセットする
DestRow[Offset].rgbtRed := SrcRow[Col].rgbtRed;
DestRow[Offset].rgbtGreen := SrcRow[Col].rgbtGreen;
DestRow[Offset].rgbtBlue := SrcRow[Col].rgbtBlue;
end;
end;
// 成功した場合、Destのハンドルを返す
Image1.Picture.Bitmap.Handle := Dest.ReleaseHandle;
except
// 失敗した場合、Srcのハンドルを返す
Image1.Picture.Bitmap.Handle := Src.ReleaseHandle;
end;
finally
Src.Free;
Dest.Free;
end;
end;
画像種別変更
use節にJpegを追加
uses Jpeg;
//BmpからJpeg
procedure TForm1.Button1Click(Sender: TObject);
Var
Jpg : TJpegImage;
Bmp : TBitMap ;
begin
Jpg :=TJpegImage.Create;
Bmp :=TBitmap.Create;
Bmp.LoadFromFile(‘C:\From.bmp’);
Jpg.Assign(BMP);
Jpg.SaveToFile(‘C:\To.jpg’ );
Bmp.Free ;
Jpg.Free;
end;
//JpegからBmp
procedure TForm1.Button1Click(Sender: TObject);
var
Jpg : TJpegImage;
Bmp : TBitmap;
begin
Jpg :=TJpegImage.Create ;
Bmp :=TBitmap.Create;
Jpg.LoadFromFile(‘From.jpg’);
Bmp.Assign(JPG);
Bmp.SaveToFile(‘To.bmp’)
Jpg.Free;
Bmp.Free ;
end;
