织梦CMS - 轻松建站从此开始!

罗索

图像旋转90度

落鹤生 发布于 2010-06-21 21:49 点击:次 
RGB24和YUV420旋转90度的源代码
TAG:

RGB24旋转90度

  1. void RGBRotate90(BYTE *des,BYTE *src,int width,int height) 
  2.  
  3. if ((!des)||(!src)) 
  4.    return
  5.      
  6. int n = 0; 
  7. int linesize = width*3; 
  8. int i,j; 
  9. for (j=width;j>0;j--) 
  10.    for (i=0;i<height;i++) 
  11.    { 
  12.     memcpy(&des[n],&src[linesize*i+j*3-3],3); 
  13.     n+=3; 
  14.    } 
  15.  
  16. /* 
  17.  
  18. if((!des)||(!src)) 
  19. { 
  20.    return; 
  21. } 
  22. int n = 0; 
  23. int linesize = width*3; 
  24. int i; 
  25. int j; 
  26. // 顺时针的旋转的算法 
  27. for(j = 0;j < width ;j++) 
  28.    for(i= height;i>0;i--) 
  29.    { 
  30.     memcpy(&des[n],&src[linesize*(i-1)+j*3-3],3); 
  31.     n+=3; 
  32.    } 
  33. */ 

YUV420旋转90度

  1. void YUVRotate90(BYTE *des,BYTE *src,int width,int height) 
  2. int i=0,j=0,n=0; 
  3. int hw=width/2,hh=height/2; 
  4. for(j=width;j>0;j--) 
  5.    for(i=0;i<height;i++) 
  6.    { 
  7.      des[n++] = src[width*i+j]; 
  8.    } 
  9.      
  10.    unsigned char *ptmp = src+width*height; 
  11.    for(j=hw;j>0;j--) 
  12.    for(i=0;i<hh;i++) 
  13.    { 
  14.     des[n++] = ptmp[hw*i+j]; 
  15.    }      
  16.  
  17.    ptmp = src+width*height*5/4; 
  18.    for(j=hw;j>0;j--) 
  19.    for(i=0;i<hh;i++) 
  20.    { 
  21.     des[n++] = ptmp[hw*i+j]; 
  22.    }      

 

(myyb)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201006/9689.html]
本文出处:百度博客 作者:myyb
顶一下
(7)
87.5%
踩一下
(1)
12.5%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容