512*384サイズのJpegファイルを4個読み、1024*768サイズに
合成(2×2)してファイル保存するプログラムを作成しています。
"LoadFromFile"でJpegファイルを読み込んだ後、どうやって合
成したらいいでしょうか?
合成するということは,つまり2×2で表示するということですよね.
表示する方法がわかならなということでしょうか.
Jpeg画像一つなら表示はできているのでしょうか.
それはどのようにしているのでしょうか.
1024*768サイズのTBitmapを用意して、その Canvas.Draw() で4カ所に
それぞれ描画して一つの画像にします。
早速の”レス”をありがとうございます。
Mr.XRAYさんへ。
下記のように"TImage"の配列を使い"ボタン3"をクリックすると一つずつ画像を
表示します。(下記ステップ)
"TOpenPictureDialog"が画像のプレビュー付きで便利そうだったので使ってみましたが”jpeg”が使えないんです。あとで変換すれば、と思っていましたが行き詰まり、はじめから"Jpeg"でできないかな?と。
junkiさんへ
"TBitMap"の名前から"Jpeg"は使えないと思ってました。
Helpファイルを調べたら使えそうなのが見つかりました。今、試行錯誤
しているところです。
取っ掛かりができたので、なんとかできそうです。ありがとうございました。
- - - - - - - - - - - - - - - - - -
type
TForm1 = class(TForm)
Button3: TButton;
OpenPictureDialog1: TOpenPictureDialog;
procedure Button3Click(Sender: TObject);
procedure FormOpen(Sender: TObject);
- - - - - - - - - - - - - -
var
Form1: TForm1;
Images: Array[0..3] of TImage ; //TImageの配列
ImagesCount: Integer;
CurrentFile: string;
implementation
{$R *.dfm}
//フォームオープン(初期値設定)
procedure TForm1.FormOpen(Sender: TObject);
begin
ImagesCount := 0
end;
//ボタン3をクリック
procedure TForm1.Button3Click(Sender: TObject);
var
w_Top : integer;
w_Left: integer;
begin
if OpenPictureDialog1.Execute then //jpegが選択できない
begin
if ImagesCount > 2 then
begin
ImagesCount := 0
end;
Images[ImagesCount] := TImage.Create(Self);
Images[ImagesCount].Parent := Form1;
Images[ImagesCount].Width := 100; //Sizeはテスト用
Images[ImagesCount].Height := 100;
w_Top := 10;
w_Left := ImagesCount;
if ImagesCount > 1 then
begin
w_Top := 120;
w_Left := w_Left - 2;
end;
Images[ImagesCount].Top := w_Top;
Images[ImagesCount].Left := w_Left * 100 +
(w_Left + 1) * 10;
CurrentFile := OpenPictureDialog1.FileName;
Images[ImagesCount].Picture.LoadFromFile(CurrentFile);
ImagesCount := ImagesCount + 1;
end;
end;
end.
uses
Jpeg;
にすると、TJpegImage のインスタンスはVCLのTGraphic互換になりますので
Bitmap.Canvas.Draw() で直接ビットマップ上に描くことができますよ。
ちょっと意地が悪かったかもしれませんが,実はJpegの扱いの問題なの
ではないかと思ったので確認したかったのです.
答えは,りおりおさんのレスにありますね.
uses
Jpeg;
こうゆう、おまじないみたいな便利な書き方ってHelpでは見つけられないものです。これで弾みがつきそうです。重ね々ありがとうございました。