一次缩放多个图像javafx

时间:2017-08-16 09:34:57

标签: java image javafx zooming tile

语言:Java FX

目标是使缩放功能正常工作(数字和平铺缩放)。 通过平铺缩放,我的意思是加载与变焦区域相对应的下一组图像。

请帮助::: Java FX的经验非常有限,因此很难继续

  

1。我有一个缩放实现,只是通过设置   图像视图的视口。

让我们称之为数码变焦

imageView.setViewport(new Rectangle2D(x, y, width, height));
  

2。缩放的另一个实现是缩放请求,下一组   将加载图像,这实际上代表缩放区域。

让我们调用此平铺缩放

for (int xNavigation = xWindowStart; xNavigation <= xWindowEnd; xNavigation++) {
                for (int yNavigation = yWindowStart; yNavigation <= yWindowEnd; yNavigation++) {
                    count++;
                    try {
                        image1 = new Image(new FileInputStream(
                                Constants.PATH_TILL_FOLDER + tileZoom + "/" + xNavigation + "_" + yNavigation + Constants.FILE_EXTESNION
                        ));
                        ImageView imageView1 = new ImageView();
//                        System.out.println("Zoom levels::::" + tileZoom);
                        imageView1.setX(xval);
                        imageView1.setY(yval);

                        imageView1.setFitHeight(image1.getHeight() * digitalZoomLevel);
                        imageView1.setFitWidth(image1.getWidth() * digitalZoomLevel);
                        imageView1.setPreserveRatio(true);
                        imageView1.setImage(image1);

                        root.getChildren().add(imageView1);
                        //System.out.println("X"+imageView1.getX());
                        //System.out.println("Y"+imageView1.getY());

                        yval = yval + image1.getHeight() ;

//                        System.out.println("Going to paint image :" + xNavigation + "-" + yNavigation);

                    } catch (FileNotFoundException ex) {
                        Logger.getLogger(DataZoom.class.getName()).log(Level.SEVERE, null, ex);
                    }

                }
                yval = 0;
                xval = xval + image1.getWidth();

            }
            System.out.println("Number of images painted tile" + count);
            System.out.println("Tile Zoom");
  
    

我的问题是第一个解决方案被开发为仅支持1个图像。怎么样     我会处理多个图像的数码变焦???。

  

为什么要缩放多张图片?例如:monalisa的照片由一组图像组成。

1 个答案:

答案 0 :(得分:0)

不确定我是否正确地解决了您的问题。为什么要一次放大多张图片?

无论如何,如果你想这样做,你需要使用线程,这可能会导致你加载图片的方式出现问题。

或者你可以&#34;假装&#34;通过以小步骤更新图片并在每个步骤之后对另一个图片执行相同操作来进行多线程处理。在这种情况下,您需要一个额外的循环来为您完成这项工作。

现在,如果您想一次只放大一张图片,但窗口内有多个图片,问题就很容易解决了。您只需要实现当前关注它的图像。