移动端利用html5对照片处理的教程实例


当前第2页 返回上一页

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

//对图片进行旋转,压缩的方法,最终返回base64  渲染给img标签的src

compress(img, fileType) {

      var degree=0,drawWidth,drawHeight,width,height;

      drawWidth=img.width;

      drawHeight=img.height;

      //以下改变一下图片大小

     var maxSide = Math.max(drawWidth, drawHeight);

     if (maxSide > 1024) {

           var minSide = Math.min(drawWidth, drawHeight);

            minSide = minSide / maxSide * 1024;

            maxSide = 1024;

           if (drawWidth > drawHeight) {

                drawWidth = maxSide;

                drawHeight = minSide;

            } else {

                drawWidth = minSide;

                drawHeight = maxSide;

            }

    }

    var canvas=document.createElement('canvas');

    canvas.width=width=drawWidth;

    canvas.height=height=drawHeight;

    var context=canvas.getContext('2d');

    //判断图片方向,重置canvas大小,确定旋转角度,iphone默认的是home键在右方的横屏拍摄方式

    if($.device.ios){

         switch(this.orientation){

              //iphone横屏拍摄,此时home键在左侧

             case 3:

                   degree=180;

                   drawWidth=-width;

                   drawHeight=-height;

                    break;

          //iphone竖屏拍摄,此时home键在下方(正常拿手机的方向)

              case 6:

                    canvas.width=height;

                    canvas.height=width;

                    degree=90;

                    drawWidth=width;

                    drawHeight=-height;

                    break;

              //iphone竖屏拍摄,此时home键在上方

               case 8:

                      canvas.width=height;

                       canvas.height=width;

                       degree=270;

                       drawWidth=-width;

                       drawHeight=height;

                       break;

          }

     }

     //使用canvas旋转校正

     context.rotate(degree*Math.PI/180);

     context.drawImage(img,0,0,drawWidth,drawHeight);

     // 压缩0.5就是压缩百分之50

     var base64data = canvas.toDataURL(fileType, 0.5);

     canvas = context = null;

     this.urlbase = base64data;

      return base64data;

},

最终拿到base64渲染给img标签的src

1

2

3

toPreviewer(dataUrl) {

       previewer.src = dataUrl;

 },

图片上传

上面拿到了base64 后台提供一个base64上传图片的接口,base64有个好处是我们获取到的base64 是进行旋转压缩后图片的base64,这样我们上传服务器,或从别的地方展示这个图片都是旋转压缩后的,如果其他页面要展示这张图片,就省去了旋转压缩的过程!其实我现在也不知道为什么通过传文件方式传图片有的安卓机不行,不过改base64上传方式成功后就业没在纠结。

感觉踩了不少坑,归根结底还是自己前端经验不足啊!

【相关推荐】

1. 免费h5在线视频教程

2. HTML5 完整版手册

3. php.cn原创html5视频教程

以上就是移动端利用html5对照片处理的教程实例的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

h5+canvas卷积核图像处理步骤详解

浅谈html5新增及移除的元素

html5设置视频背景的方法介绍

html5新增标签--nav标签介绍

html5web本地存储实例详细说明

html5的优势有哪些

iconfont图标引用的方法步骤(代码)

介绍html5+canvas调用手机拍照功能实现图片上传(下篇)

html5之pushstate和popstate操作history无刷新改变当前url的详细介绍

html5 progress进度条详解

更多相关阅读请进入《移动端》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...