使用jcrop和java裁剪图像
我正在尝试使用 JQuery Jcrop 插件和 Java Stuff 来裁剪图像,但我无法获得正确的结果。
Jsp代码:
<script type="text/javascript">
$(function () {
$('#actualImage').Jcrop({
setSelect: [0, 0, 268, 180],
addClass: 'custom',
bgColor: 'yellow',
bgOpacity: .8,
//sideHandles: true
allowResize: false,
allowSelect: false,
onSelect: storeCoords
});
});
function storeCoords(c) {
jQuery('#X1').val(c.x);
jQuery('#Y1').val(c.y);
jQuery('#X2').val(c.x2);
jQuery('#Y2').val(c.y2);
jQuery('#W').val(c.w);
jQuery('#H').val(c.h);
}
function cropPicture(){
$.ajax({
url: "cropPhoto.htm",
type: "POST",
data :{
x : $('input#X1').val(),
y : $('input#Y1').val(),
x2 : $('input#X2').val(),
y2 : $('input#Y2').val(),
w : $('input#W').val(),
h : $('input#H').val(),
imageName : $('input#imageName').val()
},
success: function (data) {
window.location = 'photo.htm';
}
}
</script>
Java代码:
@RequestMapping(value = "cropPhoto.htm", method = RequestMethod.POST)
public String cropPhoto(HttpServletRequest request,HttpServletResponse response,
HttpSession session) throws IOException{
int x1=Integer.parseInt(request.getParameter("x"));
int y1=Integer.parseInt(request.getParameter("y"));
int x2=Integer.parseInt(request.getParameter("x2"));
int y2=Integer.parseInt(request.getParameter("y2"));
int w=Integer.parseInt(request.getParameter("w"));
int h=Integer.parseInt(request.getParameter("h"));
System.out.println(x1+" "+y1+" "+x2+" "+y2+" "+w+" "+" "+h);
String image = request.getParameter("imageName");
System.out.println("imageName"+image);
String sourcePath = request.getRealPath("") + "/FreeTemp/";
String serverPath = sourcePath + session.getAttribute("uploadFile");
serverPath = serverPath.replace("\\", "/");
System.out.println(serverPath);
BufferedImage bi = ImageIO.read(new File(serverPath));
BufferedImage out = bi.getSubimage(x1, y1, w, h);
ImageIO.write(out,"jpg",new File(sourcePath + image));
session.setAttribute("croppedImage", image);
PrintWriter writer = response.getWriter();
response.setContentType("text/html");
return "redirect:/savephoto.htm";
}
我能够裁剪照片,但结果不正确。例如,查看以下图像:
I am trying to crop the image using JQuery Jcrop plugin with Java Stuff, but I am unable to get the correct result.
Jsp code:
<script type="text/javascript">
$(function () {
$('#actualImage').Jcrop({
setSelect: [0, 0, 268, 180],
addClass: 'custom',
bgColor: 'yellow',
bgOpacity: .8,
//sideHandles: true
allowResize: false,
allowSelect: false,
onSelect: storeCoords
});
});
function storeCoords(c) {
jQuery('#X1').val(c.x);
jQuery('#Y1').val(c.y);
jQuery('#X2').val(c.x2);
jQuery('#Y2').val(c.y2);
jQuery('#W').val(c.w);
jQuery('#H').val(c.h);
}
function cropPicture(){
$.ajax({
url: "cropPhoto.htm",
type: "POST",
data :{
x : $('input#X1').val(),
y : $('input#Y1').val(),
x2 : $('input#X2').val(),
y2 : $('input#Y2').val(),
w : $('input#W').val(),
h : $('input#H').val(),
imageName : $('input#imageName').val()
},
success: function (data) {
window.location = 'photo.htm';
}
}
</script>
Java code:
@RequestMapping(value = "cropPhoto.htm", method = RequestMethod.POST)
public String cropPhoto(HttpServletRequest request,HttpServletResponse response,
HttpSession session) throws IOException{
int x1=Integer.parseInt(request.getParameter("x"));
int y1=Integer.parseInt(request.getParameter("y"));
int x2=Integer.parseInt(request.getParameter("x2"));
int y2=Integer.parseInt(request.getParameter("y2"));
int w=Integer.parseInt(request.getParameter("w"));
int h=Integer.parseInt(request.getParameter("h"));
System.out.println(x1+" "+y1+" "+x2+" "+y2+" "+w+" "+" "+h);
String image = request.getParameter("imageName");
System.out.println("imageName"+image);
String sourcePath = request.getRealPath("") + "/FreeTemp/";
String serverPath = sourcePath + session.getAttribute("uploadFile");
serverPath = serverPath.replace("\\", "/");
System.out.println(serverPath);
BufferedImage bi = ImageIO.read(new File(serverPath));
BufferedImage out = bi.getSubimage(x1, y1, w, h);
ImageIO.write(out,"jpg",new File(sourcePath + image));
session.setAttribute("croppedImage", image);
PrintWriter writer = response.getWriter();
response.setContentType("text/html");
return "redirect:/savephoto.htm";
}
I am able to crop the photo, but the result is not correct. For example look at the following images:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
实际的问题是图像裁剪:您没有计算图像的实际自然高度和自然宽度。您可以尝试以下操作:
如果您想要完整的示例,请参阅此链接
The actual problem is the image cropping: you are not calculating the actual natural height and natural width of the image. You can try this:
If you want a complete example see this link
是的,我遇到了问题。我需要调整图像的大小。所以,我已经使用以下代码完成了:
现在我能够获得裁剪后的图像。
Yes i got the problem.I need to resize the image.So, i have done using the following code:
Now i am able to get the cropped image.