接上一篇图片上传功能中的ios下横屏拍的图片,最终上传却变成了竖向的解决方法。

理解canvas的rotate,得先了解几个概念

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillRect(0,0,50,100);

1、rotate的圆心是canvas的0 0位置

2、将canvas本身理解为可视区域

3、ctx rotate以后x轴和y轴都会发生变化

回到最初的问题,横向拍摄的图片绘制进canvas变成了竖向,首先想到的是rotate 90 或270 度来解决。

以rotate90度来做实例,我们先生成一个竖向的方块

<canvas id="myCanvas" style="background:#eee;"></canvas>
<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillRect(0,0,50,100);
</script>

我们需求是一个横向的,这个时候加入rotate

<canvas id="myCanvas" style="background:#eee;"></canvas>
<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.rotate(Math.PI/2);
ctx.fillRect(0,0,50,100);
</script>

发现黑方块不见了,主要是旋转90度以后,出了可视区域,在可视区域的右边,而且ctx本身的x,y轴也旋转了,这个时候需要改变绘制起点,才能让他重新出现在可视区域内,并实现了需要的效果

<canvas id="myCanvas" style="background:#eee;"></canvas>
<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.rotate(Math.PI/2);
ctx.fillRect(0,-100,50,100);
</script>

canvas rotate方法相关推荐

  1. Android开发之Canvas rotate方法释疑

    Canvas的rotate()函数本应该是很简单的一个函数,但是由于api手册言之不详,使用中难免有吃不准的地方.下面所记录的几点,都是我在使用中所迷惑过的问题,特此记录. 1,坐标原点在哪里? 如果 ...

  2. Android Canvas rotate 和translate 两个方法的研究

    转自:http://www.verydemo.com/demo_c131_i3507.html 首先我们来看这样一个需求:显示一个竖向显示的TextView.说白了,就是把我们日常使用的TextVie ...

  3. 利用canvas画布和rotate()方法让画的图形旋转起来

    上一篇讲了利用canvas画布画太极图,这一篇说的是让太极图旋转起来. **思路:**利用HTML DOM 的setInterval()方法,它会按照指定的周期来调用函数或计算表达式.再利用画布的ro ...

  4. (四)Canvas API方法和属性汇总

    canvas主要属性和方法 方法 描述 save() 保存当前环境的状态 restore() 返回之前保存过的路径状态和属性 createEvent()   getContext() 返回一个对象,指 ...

  5. Canvas 绘制方法过一遍

    Canvas 基础方法和参数介绍 save() restore() void enableZ() void disableZ() 绘制方法及参数介绍 1. drawARGB 画布颜色设置 void d ...

  6. 安卓中Canvas使用方法

    更多技术内容请移步:我的个人博客 一.前言 今天是周日,昨天刚刚写完了一篇关于如何搭建LNMP环境,让自己可以DIY有个性的个人主页: http://blog.csdn.net/jiangwei091 ...

  7. canvas rotate()画布的旋转详解

    刚才还是风和日丽的天,这没一会会就乌云密布了,雨呀,眼瞅就下来了呢,一场秋雨一场寒,感觉懂得要穿棉袄了的节奏 10月1号之前,还是T恤呢,10月放完国庆节和中秋节以后就开始毛衣.毛衫.毛外套了,这真的 ...

  8. html画布用函数旋转,canvas rotate()画布的旋转详解

    刚才仍是风和日丽的天,这没一会会就乌云密布了,雨呀,眼瞅就下来了呢,一场秋雨一场寒,感受懂得要穿棉袄了的节奏 10月1号以前,仍是T恤呢,10月放完国庆节和中秋节之后就开始毛衣.毛衫.毛外套了,这真的 ...

  9. canvas rotate中心点问题

    ctx = document.getElementByIdx_x_x_x('canvas').getContext('2d');     ctx.fillStyle = "rgb(250,0 ...

最新文章

  1. 卡尔曼滤波器的特殊案例
  2. (0053)iOS开发之沙盒(sandbox)机制和文件操作(三)
  3. 给IDEA给类和方法添加注解
  4. lua--面向对象使用middleclass
  5. 深入理解linux系统下proc文件系统内容
  6. react如何获取表单数据
  7. Golang官方限流器的用法详解
  8. Hanlp得到语义相似度的方法
  9. python contextlib closing
  10. 数据库设计(二)——简单设计实例
  11. TrueCrypt编译记录
  12. 个人业务网站php源码,最新个人发卡网源码,PHP运营级个人自动发卡平台完整源码...
  13. 地域和地方的区别_地方、地域、地区、地面、地段的区别_近义词词典_词林在线词典...
  14. html英语单词不换行,css如何设置英文单词不换行?
  15. AXI协议(5):AXI协议的burst机制
  16. win7系统64位下安装sql server2000时提示兼容性问题
  17. Word表格外的第一个空行如何删除
  18. Python读取显示raw图片+numpy基本用法记录
  19. 【活动打卡】【Datawhale】第16期 机器学习算法梳理(AI入门体验) Task02:基于决策树的分类预测
  20. 《炬丰科技-半导体工艺》硅片减薄、分离工艺

热门文章

  1. PingCAP 入选 2022 Gartner 云数据库“客户之声”,获评“卓越表现者”最高分
  2. 5k还要玩游戏?那就让他和游戏过吧!
  3. table边框加弧度
  4. OpenCV for Android入门
  5. @MapperScan的作用
  6. 网络技能大赛-云平台部分-CentOS部分13-[软件定义网络(详细)]
  7. ubuntu 13.04amd64安装 wine 1.5 office2010
  8. gdb_print调试_调试打印完整字符串内容
  9. iphone最牛判断当前手机网络连接类型wifi-2G-3G-4G-5G
  10. 国泰君安:击鼓传花 股市存量资金一年后将耗尽