在将图像上传到服务器之前旋转图像

Rotate an image before upload it on the server

上传图片有点问题。 有时,有人以错误的方向上传照片。 我想要做的是在将图像发送到我的服务器之前旋转图像。 这可能吗?

我知道我可以使用 php 中的函数 imagerotate() 但我可以在上传图片后使用它。

有没有办法通过javascript(或Jquery)旋转图片,然后通过php将信息传递给服务器?

现在我做了这样的东西:

我用jQueryRotate.js

HTML

<form method="POST" enctype="multipart/form-data">
<input type="file" id="file" name="file">
<div id="preview"></div>
<br>
<a href="#" id="counter" class="row"><- counter</a>
    <select id="degree">
        <option>90</option>
    </select>
<a href="#" id="clockwise" class="row">clockwise -></a>
<hr>
<button type="submit">save image</button>
</form>

Jquery

$(document).ready(function() {
$('.row').click(function(){
    var a = $('img').getRotateAngle();
    var d = Math.abs($('#degree').val());
    if($(this).attr('id') == 'counter'){
       //d = -Math.abs(+a - +d);
        d = a - d;
    }
    else{d = +a + +d;}

    $('img').rotate({animateTo:d});
});

/* image preview */
$('#file').change(function(){
    var oFReader = new FileReader();
    oFReader.readAsDataURL(this.files[0]);
    console.log(this.files[0]);
    oFReader.onload = function (oFREvent) {
        $('#preview').html('<img src="'+oFREvent.target.result+'">');
    };
});
});

但是我不能传输'rotation'来上传文件,我想....

非常感谢!

这是我采用的方法:

允许用户在浏览器中旋转图像。当他们这样做时,将隐藏输入字段的值设置为旋转角度。

然后当图像发布到 PHP 时,您可以读取旋转字段并处理图像。

要旋转 Javascript 中的图像,您可以使用这个简单的功能。只需使用一个旋转按钮(而不是同时向右旋转和向左旋转),此功能将循环显示四个选项。

function rotatePreview() {
  var img = document.getElementById('preview-photo');
  var currentrotate = img.style.transform;
  var newrotate = '';
  var rotatevalue = 0;

  switch(currentrotate){
    case '':
      newrotate = 'rotate(90deg)';
      rotatevalue = 90;
      break;
    case 'rotate(90deg)':
      newrotate = 'rotate(180deg)';
      rotatevalue = 180;
      break;
    case 'rotate(180deg)':
      newrotate = 'rotate(270deg)';
      rotatevalue = 270;
      break;
    case 'rotate(270deg)':
      newrotate = '';
      rotatevalue = 0;
      break;
  }

  img.style.transform = newrotate;
  document.getElementById("rotatevalue").value = rotatevalue;
}

此函数将图像旋转比当前旋转多 90 度,并将新的旋转值保存在隐藏的输入中,然后您可以将其提交给 PHP 并将图像旋转相同的角度在将其保存到服务器之前,先在 PHP 中输入金额。