社区
GAME,图形处理/多媒体
帖子详情
怎样将Image1中的aa.jpg图像旋转90度?
sbxtzhl
2002-12-01 12:13:02
请给源码,谢谢!
...全文
438
11
打赏
收藏
怎样将Image1中的aa.jpg图像旋转90度?
请给源码,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ehom
2002-12-02
打赏
举报
回复
真拿你没办法,这次把示例程序给你!
http://www.ehomsoft.com/pictest.zip
HOOK_TTG
2002-12-02
打赏
举报
回复
一定行的!!!给我加分吧!!!
--- Delphi中的Image构件可以显示位图,进一步,我们还可以用它完成位图旋转。
---- 把一个点绕原点旋转α角度后,新的坐标位置与原坐标位置的关系是:
X=xcosα-ysinα
Y= xsinα+ycosα
例如要把位图顺时针旋转90度,坐标变换公式为:X=-y Y=x
---- 把这一公式用到Image构件上,显示位图的主要问题是Image构件显示的位图只有一个象限, 并且x、y坐标也是互相颠倒的,为了解决这个问题,必须在Image构件上建立一个新的坐标原点。下面就举例说明。
---- 1. 新建一工程project1
在form1上添加image1、 image2、 image3、image4,其 Autosize属性设为True
image1用来显示原图,image2、image3、image4分别用来显示旋转90度、180度和270度后的图像。双击image1,选定一幅bmp图。
---- 2. 添加Button1、Button2、Button3和Button4按钮,其caption属性分别为“原图”、 “旋转90度”、“旋转180度”、“旋转270度”。
---- 3. 编写“旋转90度”按钮的On Click事件。
procedure TForm1. Button2Click (Sender: TObject);
var
i
j:integer;
begin
//确定旋转后位图的大小
image2.Picture.Bitmap.Height:=image1.picture.width;
image2.Picture.Bitmap.Width:=image1.picture.height;
for i:=0 to image1.Height do
for j:=0 to image1.Width do
image2.canvas.Pixels[(-i+ image1.Height)
j]:=image1.canvas.Pixels[j
i];
end;
---- 4. 编写“旋转180度”按钮的On Click事件。
procedure TForm1.Button3Click(Sender: TObject);
var
i
j:integer;
begin
//确定旋转后位图的大小
image3.Picture.Bitmap.Height:=image1.picture.Height;
image3.Picture.Bitmap.Width:=image1.picture.Width;
for i:=0 to image1.Height do
for j:=0 to image1.Width do
image3.canvas.Pixels[(image1.Width
-j)
(image1.Height-i)]:=image1.canvas.Pixels[j
i];
end;
---- 5. 编写“旋转270度” 按钮的On Click事件。代码和步骤3相似,只需要用image4 替换image2,然后用以下的语句替换步骤3 for循环中的原有的语句。
image4.canvas.Pixels[i
(image1.Width-j)]:=image1.canvas.Pixels[j
i];
sbxtzhl
2002-12-02
打赏
举报
回复
各位高手的帮助,在些小弟表示特别感谢,但我还是没有调试出来,请各位再帮助解决为感!!
VisualLion
2002-12-02
打赏
举报
回复
像素级处理
耙子
2002-12-01
打赏
举报
回复
你把它当作矩阵,他的算法就是矩阵的旋转了。
ehom
2002-12-01
打赏
举报
回复
TemBmp.Assign(TemBmp);
改为
TemBmp.Assign(JPG);
ehom
2002-12-01
打赏
举报
回复
VAR
Bitmap:TBitmap;
TemBmp:TBitamp;
JPG:TJPEGImage;
i : INTEGER;
j : INTEGER;
rowIn : pRGBArray;
BEGIN
JPG := TJPEGImage.Create;
JPG.LoadFromFile(FilName);
TemBmp := TBitmap.Create;
TemBmp.Assign(TemBmp);
Bitmap := TBitmap.Create;
Bitmap.Width := TemBmp.Height;
Bitmap.Height := TemBmp.Width;
Bitmap.PixelFormat := TemBmp.PixelFormat;
FOR j := 0 TO TemBmp.Height - 1 DO
BEGIN
rowIn := TemBmp.ScanLine[j];
FOR i := 0 TO TemBmp.Width - 1 DO
pRGBArray(Bitmap.ScanLine[TemBmp.Width - i - 1])[j] := rowIn[i]
END;
END;
lfstudy
2002-12-01
打赏
举报
回复
还是用CopyRect吧,最方便的方法
CopyRect(const Dest: TRect; Canvas: TCanvas; const Source: TRect)
提示:Dest,Source的不同可实现图像的翻转、旋转等操作
ehom
2002-12-01
打赏
举报
回复
TYPE
TRGBArray = ARRAY[0..65534] OF TRGBTriple;
pRGBArray = ^TRGBArray;
这个当然不能少!
TBitmap纯属笔误!
sbxtzhl
2002-12-01
打赏
举报
回复
错误信息如下:请指教
[Error] Unit1.pas(30): Undeclared identifier: 'TBitamp'
[Error] Unit1.pas(34): Undeclared identifier: 'pRGBArray'
lfstudy
2002-12-01
打赏
举报
回复
CopyRect
OpenCV将
图像旋转
180
度
OpenCV将
图像旋转
90
度
的倍数一般有两种方式。一是使用transpose()和flip()函数组合,通过定义旋转函数rotate
Image
()实现不同角
度
旋转,还封装了计时函数。二是OpenCV3以后可用rotate()函数,一个函数就能实现不同角
度
旋转,且效果与第一种方法相同,更为简洁。
python opencv旋转图片
90
度
_使用OpenCV将
图像旋转
90
度
的最简单方法?
本文介绍了如何使用OpenCV库在Python
中
将
图像旋转
90
度
。提供了两种方法,一种是通过transpose和flip函数组合,另一种是使用rotate函数。这两种方法都包含顺时针和逆时针旋转的示例。
OpenCV warpAffine做
图像旋转
变换
90
度
黑边问题
本文揭示了OpenCV
中
图像旋转
函数cv2.warpAffine的隐藏问题,尤其是在使用getRotationMatrix2D时,通过实例和理论分析指出
中
心点计算的调整。解决
90
度
旋转时的黑边问题,提供了修正后的代码和关键知识点。
通过transpose和flip实现
图像旋转
90
/180/270
度
本文介绍了一种利用fbc_cv库
中
的transpose和flip函数实现图像顺时针
90
度
、180
度
、270
度
旋转的方法,避免了使用warpAffine函数的复杂性,提供了一个简单高效的
图像旋转
解决方案。
opencv C++图像/视频旋转
90
度
180
度
270
度
本文介绍了一种使用OpenCV库进行图像处理的方法,通过代码演示了如何读取图像并实现
90
度
、180
度
及270
度
的旋转操作。
GAME,图形处理/多媒体
1,184
社区成员
14,330
社区内容
发帖
与我相关
我的任务
GAME,图形处理/多媒体
Delphi GAME,图形处理/多媒体
复制链接
扫一扫
分享
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章