-2

我正在尝试在我的函数中获取 exif 方向变量,但我可以将它抓取到另一个函数......请问我怎么能得到它(var orientat)?

$(function() {
        $('#takePictureField').change(function(e) {
            $("#canvas_captimg").show();
            $( "#imgcaptmobile" ).empty();
            $( "#imgcaptmobile" ).hide();

            var file = e.target.files[0],
                imageType = /image.*/;

            if (!file.type.match(imageType))
                return;
                    var fr = new FileReader();
                    fr.onload = function() {
                 var exif = EXIF.readFromBinaryFile(new BinaryFile(this.result));
                   // console.log(exif.Orientation);
                    var orientat = exif.Orientation;
                };
                fr.readAsBinaryString(file);

            var reader = new FileReader();
            reader.onloadend = fileOnload;
            reader.readAsDataURL(file);
        });

        function fileOnload(e) {
            var $img = $('<img>', { src: e.target.result });
            var canvas = $('#canvas_captimg')[0];
            var context = canvas.getContext('2d');

            $img.load(function() {
                var MAX_WIDTH = 487;
                  var MAX_HEIGHT = 1800;
                  var width = this.width;
                  var height = this.height;

                  var moit_width_2 = 0;
                  var moit_height_2 = 0;
console.log(orientat);
                  if (orientat > 1) {
                    if (orientat == 3 || orientat == 4) {
                        var rotation = 180;
                    }
                    if (orientat == 6 || orientat == 5) {
                        var rotation = 90;
                    }
                    if (orientat == 8 || orientat == 7) {
                        var rotation = 270;
                    }
                    var moit_width = width / 2;
                      var moit_height = height / 2;
                      var moit_width_2 = 0 - moit_width;
                      var moit_height_2 = 0 - moit_height;

                      context.translate(moit_width, moit_height);
                            context.rotate(rotation * Math.PI/180);
                  }

                  if (width > height) {
                    if (width > MAX_WIDTH) {
                      height *= MAX_WIDTH / width;
                      width = MAX_WIDTH;
                    }
                  } else {
                    if (height > MAX_HEIGHT) {
                      width *= MAX_HEIGHT / height;
                      height = MAX_HEIGHT;
                    }
                  }

                context.drawImage(this, moit_width_2, moit_height_2, width, height);
                 $( "#imgcaptmobile" ).append( '<img id="imagecaptmobile" src="' + canvas.toDataURL("image/png") + '" style="display:hidden">');
            });
        }
        });
4

1 回答 1

1

您应该查看答案 - JavaScript 中变量的范围是什么?关于变量范围如何在 javascript 中工作以了解您所请求的内容。

要回答您的问题,请将变量设为全局变量或将其作为参数传递给函数。

要使其全球化,请尝试以下操作:

在开头添加以下行。

var orientat;

将分配更新为

orientat = exif.Orientation;
于 2013-07-02T12:20:32.570 回答