unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
const BmpPath = 'C:\Temp\Test.bmp';procedure TForm1.Button1Click(Sender: TObject);
var
bit: TBitmap;
clr: TColor;
X,Y:INTEGER;
pixels: TStrings;
begin
X:=STRTOINT(EDIT1.TEXT);
Y:=STRTOINT(EDIT2.TEXT);
bit := TBitmap.Create;
bit.LoadFromFile(BmpPath); {载入图片}
clr := bit.Canvas.Pixels[X,Y]; {获取第一像素的颜色值}
ShowMessageFmt('%.6x', [clr]); {显示为十六进制字符串看看}
pixels:= TStringList.Create;
pixels.Add(ColorToString(clr));
pixels.SaveToFile('c:\temp.txt');
pixels.Free;
//Self.Color := clr; {可用窗体呈现一下}
bit.Free;
end;end.我有在“clr := bit.Canvas.Pixels[X,Y]; ”前面加“for i:=0 to bit.width-1 do"
"for j:=0 to bit.height-1 do"
但是这样还是不能保存。请高手帮我指点指点!谢谢!!!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
const BmpPath = 'C:\Temp\Test.bmp';procedure TForm1.Button1Click(Sender: TObject);
var
bit: TBitmap;
clr: TColor;
X,Y:INTEGER;
pixels: TStrings;
begin
X:=STRTOINT(EDIT1.TEXT);
Y:=STRTOINT(EDIT2.TEXT);
bit := TBitmap.Create;
bit.LoadFromFile(BmpPath); {载入图片}
clr := bit.Canvas.Pixels[X,Y]; {获取第一像素的颜色值}
ShowMessageFmt('%.6x', [clr]); {显示为十六进制字符串看看}
pixels:= TStringList.Create;
pixels.Add(ColorToString(clr));
pixels.SaveToFile('c:\temp.txt');
pixels.Free;
//Self.Color := clr; {可用窗体呈现一下}
bit.Free;
end;end.我有在“clr := bit.Canvas.Pixels[X,Y]; ”前面加“for i:=0 to bit.width-1 do"
"for j:=0 to bit.height-1 do"
但是这样还是不能保存。请高手帮我指点指点!谢谢!!!
var
bit: TBitmap;
clr: TColor;
X,Y:INTEGER;
pixels: TStrings;
begin
X:=STRTOINT(EDIT1.TEXT);
Y:=STRTOINT(EDIT2.TEXT);
bit := TBitmap.Create;
bit.LoadFromFile(BmpPath); {载入图片}
clr := bit.Canvas.Pixels[X,Y]; {获取第一像素的颜色值}
ShowMessageFmt('%.6x', [clr]); {显示为十六进制字符串看看}
pixels:= TStringList.Create;
for i := 0 to bit.Width - 1 do
for j := 0 to bit.Height - 1 do
begin
clr := bit.Canvas.Pixels[i, j];
pixels.Add(ColorToString(clr));
end;
pixels.SaveToFile('c:\temp.txt');
pixels.Free;
//Self.Color := clr; {可用窗体呈现一下}
bit.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
bit: TBitmap;
clr: TColor;
X,Y:INTEGER;
s: string;
pixels: TStrings;
begin
X:=STRTOINT(EDIT1.TEXT);
Y:=STRTOINT(EDIT2.TEXT);
bit := TBitmap.Create;
bit.LoadFromFile(BmpPath); {载入图片}
clr := bit.Canvas.Pixels[X,Y]; {获取第一像素的颜色值}
ShowMessageFmt('%.6x', [clr]); {显示为十六进制字符串看看}
pixels:= TStringList.Create;
for i := 0 to bit.Width - 1 do
begin
s := '';
for j := 0 to bit.Height - 1 do
begin
clr := bit.Canvas.Pixels[i, j];
s := s + ColorToString(clr) + ' ';
end;
pixels.Add(s);
end;
pixels.SaveToFile('c:\temp.txt');
pixels.Free;
//Self.Color := clr; {可用窗体呈现一下}
bit.Free;
end;
就是我在EDIT里面输入(1,0),(40,94),(3,100)......这样的坐标,就可以保存在temp.txt里面。但是点是任意的点。懂了吗?谢谢!
可能不是用“for i:=0 to bit.width-1 do"
"for j:=0 to bit.height-1 do"。
procedure SavePixel(AEdit: TEdit; ABitmap: TBitmap; AStrings: TStrings);
var
text, s: string;
i, x, y: Integer;
clr: TColor;
begin
text := StringReplace(AEdit.Text, ' ', '', [rfReplaceAll]);
text := StringReplace(text, '(', '', [rfReplaceAll]);
text := StringReplace(text, ')', '', [rfReplaceAll]);
i := Pos(',', text);
s := Copy(text, 1, i - 1);
x := StrToInt(s);
s := Copy(text, i + 1, Length(text) - i);
y := StrToInt(s);
if (x >= 0) and (x < ABitmap.Width) and (y >= 0) and (y < ABitmap.Height) then
begin
clr := ABitmap.Canvas.Pixels[x, y];
AStrings.Add(ColorToString(clr));
end;
end;var
bmp: TBitmap;
pixels: TStrings;
begin
bmp := TBitmap.Create;
bmp.LoadFromFile(BmpPath);
pixels := TStringList.Create;
SavePixel(Edit1, bmp, pixels);
SavePixel(Edit2, bmp, pixels);
pixels.SaveToFile('c:\temp.txt');
bmp.Free;
pixels.Free;
end;
你刚写的那个代码我放到DELPHI里面不行啊!麻烦你了!!
麻烦你帮我改下吧.我很急啊!
就是让我可以在EDIT里面输入X,Y的坐标,然后可以读取其RGB,而且是输入的点的次数(就是输入的总共的点数)最少点为1次,最多点为图的长乘以宽次.
麻烦你啊!我现在在赚分了,到时会给你加分的.谢谢了!!
var
bit: TBitmap;
clr: TColor;
X,Y:INTEGER;
pixels: TStrings;
begin
X:=STRTOINT(EDIT1.TEXT);
Y:=STRTOINT(EDIT2.TEXT);
bit := TBitmap.Create;
bit.LoadFromFile(BmpPath); {载入图片}
clr := bit.Canvas.Pixels[X,Y]; {获取第一像素的颜色值}
ShowMessageFmt('%.6x', [clr]); {显示为十六进制字符串看看}
pixels:= TStringList.Create;
pixels.Add(ColorToString(clr));
pixels.SaveToFile('c:\temp.txt');
pixels.Free;
//Self.Color := clr; {可用窗体呈现一下}
bit.Free;
end;这段代码没什么问题啊,取出坐标对应的像素,然后保存。
procedure TForm1.Button1Click(Sender: TObject);
var
bit: TBitmap;
clr: TColor;
X,Y:INTEGER;
pixels: TStrings;
begin
X:=STRTOINT(EDIT1.TEXT);
Y:=STRTOINT(EDIT2.TEXT);
bit := TBitmap.Create;
bit.LoadFromFile(BmpPath); {载入图片}
clr := bit.Canvas.Pixels[X,Y]; {获取第一像素的颜色值}
pixels:= TStringList.Create;
pixels.Add(IntToHex(clr, 0));
pixels.SaveToFile('c:\temp.txt');
pixels.Free;
bit.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
bit: TBitmap;
clr: TColor;
X,Y:INTEGER;
pixels: TStrings;
begin
X:=STRTOINT(EDIT1.TEXT);
Y:=STRTOINT(EDIT2.TEXT);
bit := TBitmap.Create;
bit.LoadFromFile(BmpPath); {载入图片}
clr := bit.Canvas.Pixels[X,Y]; {获取第一像素的颜色值}
pixels:= TStringList.Create;
if FileExists('c:\temp.txt') then
pixels.LoadFromFile('c:\temp.txt');
pixels.Add(IntToHex(clr, 0));
pixels.SaveToFile('c:\temp.txt');
pixels.Free;
bit.Free;
end;