Tag: scale

使用仿射变换放大

我正在使用JAVA swing开展个人项目。 该项目是关于在窗口上绘制地图。 地图可以使用仿射变换进行缩放。 我在这里遇到的问题是每当我放大或缩小地图时,也会移动而不是放大/缩小位于屏幕中心的地图上的点 private void updateAT() { Dimension d = panel.getSize(); int panelW = d.width; int panelH = d.height; Rectangle2D r = regionList[0].get(“Victoria”).getShape().getBounds2D(); scaleX = (panelW/r.getWidth()) * zoom; scaleY = (panelH/r.getHeight()) * zoom; AffineTransform goToOrigin = AffineTransform.getTranslateInstance(-r.getMinX(), -r.getMinY()); AffineTransform pan = AffineTransform.getTranslateInstance(panX, panY); AffineTransform scaleAndFlip = AffineTransform.getScaleInstance(scaleX, -scaleY); //AffineTransform mirror_y = new AffineTransform(1, […]

如何在Graphics方法中使用ImageObserver drawImage()

我试图使用的方法是:drawImage(image,int,int,int,int,ImageObserver)方法,以便我可以扩展我的图像,在我看到的所有示例中,ImageObserver应该是这个,但这不是似乎工作(即我见过的唯一方法是:drawImage(image,int,int,ImageObserver),不知道这是否有所不同)。 这是我的主要类applet: import java.applet.*; import java.awt.*; public class Main extends Applet implements Runnable{ private Thread th; private Hitter hitter; //double buffering private Graphics dbg; private Image dbImage; public void init(){ hitter = new Hitter(getImage(getCodeBase(), “Chitter.png”)); } public void start(){ th = new Thread(this); th.start(); } public void stop(){ th.stop(); } public void update(Graphics g){ if(dbImage […]

如何获得bufferedImage的缩放实例

我想得到一个缓冲图像的缩放实例,我做了: public void analyzePosition(BufferedImage img, int x, int y){ img = (BufferedImage) img.getScaledInstance(getWidth(), getHeight(), Image.SCALE_SMOOTH); …. } 但我得到一个例外: Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: sun.awt.image.ToolkitImage cannot be cast to java.awt.image.BufferedImage at ImagePanel.analyzePosition(ImagePanel.java:43) 我想要转换为ToolkitImage然后使用我在其他文章中读到的方法getBufferedImage 。 问题是没有类如sun.awt.image.ToolkitImage我无法sun.awt.image.ToolkitImage转换它,因为Eclipse甚至没有看到这个类。 我使用Java 1.7和jre1.7 。

在java中缩放多页TIFF图像

我想更改多页TIFF图像的高度,所以我使用下面的代码片段来缩放它。 但它只从tiff文件返回第一页,我想它会将其转换为JPEG图像。 如何保留文件的所有页面? public static byte[] scale(byte[] fileData, int width, int height) { System.out.println(“width:::”+width+”::::height:::”+height); ByteArrayInputStream in = new ByteArrayInputStream(fileData); ByteArrayOutputStream buffer=null; BufferedImage img=null; BufferedImage imageBuff=null; try { ImageInputStream imageStream = ImageIO.createImageInputStream(new ByteArrayInputStream(fileData)); java.util.Iterator readers = ImageIO.getImageReaders(imageStream); while(readers.hasNext()) { ImageReader nextImageReader = readers.next(); nextImageReader.reset(); } img = ImageIO.read(in); if(height == 0) { height = (width * […]