在将图像上传到服务器之前旋转图像
Rotate an image before upload it on the server
上传图片有点问题。
有时,有人以错误的方向上传照片。
我想要做的是在将图像发送到我的服务器之前旋转图像。
这可能吗?
我知道我可以使用 php 中的函数 imagerotate()
但我可以在上传图片后使用它。
有没有办法通过javascript(或Jquery)旋转图片,然后通过php将信息传递给服务器?
现在我做了这样的东西:
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 中输入金额。
上传图片有点问题。 有时,有人以错误的方向上传照片。 我想要做的是在将图像发送到我的服务器之前旋转图像。 这可能吗?
我知道我可以使用 php 中的函数 imagerotate()
但我可以在上传图片后使用它。
有没有办法通过javascript(或Jquery)旋转图片,然后通过php将信息传递给服务器?
现在我做了这样的东西:
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 中输入金额。