保存时像素出错 ( 积分: 100 )

  • 主题发起人 主题发起人 无聊才编程
  • 开始时间 开始时间

无聊才编程

Unregistered / Unconfirmed
GUEST, unregistred user!
function TForm1.bian(lk:integer):integer;
begin
image3.canvas.Pixels[1,1]:=lk;
image3.Picture.SaveToFile(extractfilepath(application.ExeName)+'/1.bmp');
image3.Picture.LoadFromFile(extractfilepath(application.ExeName)+'/1.bmp');
bian:=image3.canvas.Pixels[1,1];
end;
代码如上,为什么我在调用的时候是bian(50331667)可是反回值成了16777215。也就是说只要像素被保存后在打开就变了。怎么样在做一个函数。我把变化后的16777215传给函数,他就反回50331667像素的原值?急呀.~~~~~~~~~~~~~~~~~~~~~[xx(][xx(][xx(][xx(][xx(]
 
你够牛的,这样的方法也能想到,告诉你把,不可能有逆转的函数。
BMP图,是24位的话,也就是说,一个像素要用24 bit保存颜色信息,所以 2^24 = 16777215 即一个像素所能表达的数字范围就只能是 0 到 16777215,你用大于任何大于16777215的数去存,但到的,肯定都是这个数。而且数字信息丢失后,是不可能再用什么函数转换回来的。
可以考虑把大数折分了,然后用几个像素去保存。
 
后退
顶部