【问题标题】:Rotate an image before upload it on the server在将图像上传到服务器之前旋转图像
【发布时间】:2015-06-29 19:40:36
【问题描述】:

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

我知道我可以使用 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+'">');
    };
});
});

但我认为我无法将“旋转”传输到上传文件....

非常感谢!

【问题讨论】:

  • JavaScript 旋转改变视图而不是真实图像。
  • 你需要在画布上绘制图像,旋转画布,然后从画布中读取数据得到旋转后的图像
  • 你能给我看一个简单的例子吗?谢谢!除了画布没有其他方法吗?因为旧版浏览器不支持 html 5
  • 这应该可以满足您的需求:stackoverflow.com/questions/38734035/…

标签: javascript php jquery image upload


【解决方案1】:

要在 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 中将图像旋转相同的量它在服务器上。

【讨论】:

    【解决方案2】:

    这是我采取的方法:

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

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

    【讨论】:

    • 其实,相隔多年的我就是这么做的
    猜你喜欢
    • 2011-10-08
    • 1970-01-01
    • 2019-09-23
    • 2013-10-05
    • 2011-02-13
    • 2012-01-19
    • 2014-12-30
    • 1970-01-01
    相关资源
    最近更新 更多