, SizeOf(DS), @DS);
//读取头信息
BMIInfo.bmiHeader:=ds.dsBmih;
//读入DIB
GetDIBits(DC, TempBmp.Handle, 0, ds.dsBmih.biHeight,lpvSBits,
BMIInfo^ , DIB_RGB_COLORS);
//倒置图像
for i:=0 to TempBmp.Height-1 do
begin
sOffset:=i*TempBmp.Width;
dOffset:=(TempBmp.Height-i-1)*TempBmp.Width;
CopyMemory(lpvDBits+dOffset,lpvSBits+sOffset,TempBmp.Width);
end;
//保存文件
for i:=0 to TempBmp.Height-1 do
begin
wData:=0;
for j:=0 to TempBmp.Width-1 do
begin
//ShowMessage(inttostr(ord((lpvDBits+i*TempBmp.Width+j)^)));
if ord((lpvDBits+i*TempBmp.Width+j)^)=0 then
begin
wData:=(wData shl 1)OR 1;
end
else
begin
wData:=(wData shl 1)OR 0;
end;
end;
MemoryStream.Write(wData,SizeOf(wData));
end;
MemoryStream.SaveToFile(SaveFileName);
MemoryStream.Free;
//TempBmp.SaveToFile(''temp.bmp'')可删除,存''temp.bmp''文件的目的只是为对比察看
TempBmp.SaveToFile(''temp.bmp'');
TempBmp.Free;
result:=True;
end;
附:本文全部为
原创内容,如果您使用中对
程序做了改动请发给作者一分webmaster@daheng-image.com;引用是请注明作者Thermometer和Email,谢谢。