计算用于裁剪java的图像区域

时间:2013-03-21 17:45:45

标签: java image crop

我正在尝试根据动态绘制的方块裁剪图像。 为了准确地绘制所绘制的方形,我(在裁剪之前)调整我的图像大小以适应面板宽度&高度,以便面板上绘制的每个矩形都应该与物理图像上相同的正方形点值完全对应。

首先,这种实现方式存在问题吗? 如果不是,那么尽管有这个调整大小的步骤,结果裁剪的矩形总是“移动”几个(像素?英寸?)右边。

我认为自从图像magick的“调整大小”后,我使用带有像素的工作,并且使用拖动的方形屏幕点值,它会导致问题。关于如何在他们之间进行转换的任何想法?我会非常感谢,尽管我已经用不同的方式努力解决它。

这里是相关代码:

public void resizeImage(int panelW){
        int percent;
        String sign;
        float imgW=img.getWidth(null);

        percent=(int) (((panelW-imgW)/imgW)*100);
        sign="+resize";
        if(panelW <imgW){
            percent=(int)(((imgW-panelW)/panelW)*100);
            sign="-resize";
        }

        String command="convert "+imagePath+" "+sign+" "+percent+"% "+imagePath;

       //...executeCommand(command) and repaint();

    }
  • 我还尝试在裁剪之前调整图像大小:

    Dimension newImagesize=getScaledDimension();
      String command="convert"+imagePath+"-resize"+newImagesize.width+"X"+newImagesize.height+" "+imagePath
    

其中getScaledDimension()取自此处:Java image resize, maintain aspect ratio

然后我只上传调整大小的图片,它应该具有这样的面板尺寸:

img= new ImageIcon(imgPath).getImage();
repaint();

正如我所说,裁剪后的图像总是会移动一些像素(?),所以我认为resizeImage()测量中存在一个问题,但它对我来说是接缝逻辑..

裁剪功能使用缩放器:

Rectangle r=resizer.getBounds();
            try {
                String x="",y="";
                if(r.x>0)x="+"+r.x;
                if(r.y>0)y="+"+r.y;

                cropImage(r.width, r.height, x, y);

并使用裁剪ImageMagick命令。

0 个答案:

没有答案