怎么实现tif、jpg格式的图片在delphi程序中旋转90度

发布网友

我来回答

1个回答

热心网友

类似的问题我在java上解决过,下面大概说一下算法:
先建立两个BufferedImage类的对象,暂命名一个叫A,一个叫B。首先,对象A记录了准备旋转的位图的信息。在计算机中,位图表示的方式是一个由很多个8位整数组成的集合,其中每一个元素都是一个8位的整数,也就是说,每一个像素由一个8位的整数来表示,其中的信息有像素的透明度(0~255)、红(0~255)、蓝(0~255)、绿(0~255)。知道了这个以后,就好办了,我们要做的就是把对象A的数据做一个旋转的计算,然后放到对象B中相应的位置。最后把处理好的对象B保存,并覆盖了对象A,那么,看上去就好象是对象A旋转了一样。
这里还有一点要讨论的,到底应该是扫描对象A上的点,在对象B上寻找自己的位置合适,还是扫描对象B上的点,在对象A上找到响应的点合适呢。经测试,如果扫描的是对象A,也就是计算每一个原位图上的每一点像素旋转以后的位置的话,旋转以后的位图会出现梅花点。其原因是计算机在计算机三角函数时是取近似值的,这样带出的一个问题就是:有可能在对象A的两个点经旋转以后到达对象B上的同一个位置,导致对象B上的某些点没有数据,这些没有数据的点就是所谓的“梅花点”。如果换个方式,我们扫描的是对象B,然后为每一个对象B上的点在对象A上找一个点与之对应,这样就能保证所有的对象B上的点都有数据了。也许你会问也有可能对象B上的两个点在对象A上找到同一个点。这个没关系,经测试,这个办法所生成的旋转后的图像基本上没有损失。
希望能给你启示

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com