16,748
社区成员
发帖
与我相关
我的任务
分享
procedure Button1Click(Sender: TObject);
var
i : integer;
begin
OpenDialogFilter := '*.jpg|*.jpg';
OpenDialogFileName := '';
OpenDialogExecute;
if OpenDialogFiles.Count = 0 then
exit;
with aqrecordphotos do
begin
for i := 0 to OpenDialogFiles.Count - 1 do
begin
append;
tblobField(findfield('Photo')).LoadFromFile(OpenDialogFiles.Strings[i]);
tblobField(findfield('smallphoto')).LoadFromStream(ZoomJpgFrmFile(OpenDialogFiles.Strings[i]));
post;
end;
end;
end;
function ZoomJpgFrmFile(vFileName: String): TStream;
var
Jpg : TJpegImage;
Bmp : TBitmap;
const
SPercent : single = 0.1;
begin
jpg := TJpegImage.Create;
Bmp := TBitmap.Create;
jpg.loadfromfile(vfilename);
bmp := jpg2bmp(jpg);
if bmp.Width * SPercent <= 100 then
bmp := zoombmp(bmp,100,trunc(100 / bmp.Width * bmp.Height))
else
bmp := zoombmp(bmp,trunc(bmp.Width * spercent),trunc(bmp.Height * spercent));
jpg := bmp2jpg(bmp,100);
result := TMemoryStream.Create;
jpg.SaveToStream(result);
jpg.free;
bmp.Free;
end;
function Jpg2Bmp(Jpg: TJpegImage): TBitmap;
begin
Result := nil;
if Assigned(Jpg) then
begin
Result := TBitmap.Create;
Jpg.DIBNeeded; {Key method...}
Result.Assign(Jpg); {It‖s all folks...}
end;
end;
function ZoomBmp(vImage: TBitmap; dWidth,
dHeight: Integer): TBitmap;
var
ori: TBitmap;
dispositivo_o, dispositivo_d: HDC;
pepito: HBitmap;
begin
ori := Tbitmap.Create;
result := TBItmap.Create;
ori.handle := vImage.handle;
result.width := dWidth;
result.height := dHeight;
dispositivo_o := CreateCompatibleDC(0);
dispositivo_d := CreateCompatibleDC(0);
SelectObject(dispositivo_o, ori.handle);
pepito := SelectObject(dispositivo_d, result.handle);
SetStretchBltMode(dispositivo_d, STRETCH_HALFTONE);
StretchBlt(dispositivo_d, 0, 0, dWidth, dHeight, dispositivo_o, 0, 0, ori.width, ori.height, SRCCOPY);
SelectObject(dispositivo_d, pepito);
ori.Free;
DeleteObject(pepito);
DeleteDC(dispositivo_o);
DeleteDC(dispositivo_d);
end;
function Bmp2Jpg(Bmp: TBitmap; Quality: Integer): TJpegImage;
begin
Result := nil;
if Assigned(Bmp) then
begin
Result := TJpegImage.Create;
Result.Assign(Bmp); {It‖s all folks...}
Result.CompressionQuality := Quality;
Result.JPEGNeeded; {Key method...}
Result.Compress;
end;
end;