用java教你学会截图

首先这个问题也困扰了我挺久,慢慢的我就摸索出一条路子,其实也挺简单的。

废话不多说,看我如何降服这妖怪...

首先用到jquery的一个插件,Jcrop。用这个工具截取你需要的图片大小。

然后要提交这个被截图的大小,也就是坐标了。

比如这样的代码: <form  action="/browsing/privacy.do?method=dos" method="post" name="formsa">
                        <input type="hidden" size="4" id="x" name="x" />
                        <input type="hidden" size="4" id="y" name="y" />
                        <input type="hidden" size="4" id="w" name="w" />
                        <input type="hidden" size="4" id="h" name="h" />
                    </form>

这里是记录了4个坐标,截取图片高,宽,和XY的坐标数据。如果为了美观用的不是input文件域按钮的而是用图片的话,这里有一个难点。那怎么解决呢。解决方案就是通过<A hidefocus="true"  class="addfileA" href="javascript:void(0)">
                          <input hidefocus="true"  class="addfileI"  type="file" id="files" name="file" size="1"  onchange="formsubmit()" /></A>

然后定义样式.addfileA{ position:relative; cursor:hand; text-decoration:none; background-image: url('/browsing/pic/sctx02.gif'); width:20px;height: 30px }
.addfileI { cursor:hand; position:relative; left:0px; width:108px;height: 30; background-color: blue; opacity:0; filter:alpha(opacity=0) ;height: 30px}

通过这种方法可以实现图片提交文件域了。(为什么要这样呢,因为为了安全起见规定是不能用JavaScript提交文件域的)

图片截取了,坐标搞定了。现在就差如何用java代码截取图片了。

看下面代码:String x = request.getParameter("x");
    String y = request.getParameter("y");
    String w = request.getParameter("w");
    String h = request.getParameter("h");
    String images = request.getParameter("imagesLOAD");
    ActionForward forwrad = new ActionForward();
        User user=((User)request.getSession().getAttribute("user"));
        BrowsingUser browsingUser=browsingUserDAO.load(user.getDataId());
        SystemParameter systemParameter = (SystemParameter) request.getSession().getServletContext().getAttribute("systemParameter");
    String imagesURL=systemParameter.getFileUrlName()+File.separator+images;
    images=images.replace("/", File.separator);
        OperateImage image = new OperateImage(Integer.parseInt(x),Integer.parseInt(y),Integer.parseInt(w),Integer.parseInt(h));
   image.setSrcpath(systemParameter.getFliePath()+File.separator+"touxiang"+File.separator+user.getUsername()+File.separator+images);
        image.setSrcpath(systemParameter.getFliePath()+images);
        images=this.returnstring(systemParameter.getFliePath()+images);
        image.setSubpath(images);
        image.cut();

那么该image就是截取后他图片了路径就是images了。

然后在你要显示截取后图片的地方用images的路径就OK了。

欢迎不懂的TZ咨询

posted @ 2010-02-26 08:48  林强  阅读(294)  评论(0编辑  收藏  举报