相关疑难解决方法(0)

ImageIO无法写入JPEG文件

我有一个BufferedImage我正在尝试写一个jpeg文件,但是我的Java程序抛出异常.我能够成功地将相同的缓冲区保存到gif和png.我曾尝试在Google上寻找解决方案,但无济于事.

码:

   File outputfile = new File("tiles/" + row + ":" + col + ".jpg");
   try {
       ImageIO.write(mapBufferTiles[row][col], "jpg", outputfile);
   } catch (IOException e) {
        outputfile.delete();
        throw new RuntimeException(e);
   }
Run Code Online (Sandbox Code Playgroud)

例外:

 Exception in thread "main" java.lang.RuntimeException: javax.imageio.IIOException: Invalid argument to native writeImage
 at MapServer.initMapBuffer(MapServer.java:90)
 at MapServer.<init>(MapServer.java:24)
 at MapServer.main(MapServer.java:118)
 Caused by: javax.imageio.IIOException: Invalid argument to native writeImage
 at com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeImage(Native Method)
 at com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeOnThread(JPEGImageWriter.java:1055)
 at com.sun.imageio.plugins.jpeg.JPEGImageWriter.write(JPEGImageWriter.java:357)
 at javax.imageio.ImageWriter.write(ImageWriter.java:615)
 at javax.imageio.ImageIO.doWrite(ImageIO.java:1602)
 at javax.imageio.ImageIO.write(ImageIO.java:1526)
 at MapServer.initMapBuffer(MapServer.java:87)
 ... 2 more
Run Code Online (Sandbox Code Playgroud)

java jpeg image javax.imageio

48
推荐指数
4
解决办法
3万
查看次数

使用Graphics2D覆盖BufferedImage上的文本并返回BufferedImage

我已经检查了类似命名的问题,但他们没有回答这个用例.

基本上,我是在一个给定的坐标(x,y)上叠加一些文本(文本)我在包中有以下功能;

protected BufferedImage Process2(BufferedImage image){
    Graphics2D gO = image.createGraphics();
    gO.setColor(Color.red);
    gO.setFont(new Font( "SansSerif", Font.BOLD, 12 ));
    gO.drawString(this.text, this.x, this.y);
    System.err.println(this.text+this.x+this.y);
    return image;
}
Run Code Online (Sandbox Code Playgroud)

我觉得我错过了一些显而易见的东西; 我可以找到的每一个对Graphics2D的引用都是处理游戏或直接写入文件,但我只想要返回一个BufferedImage.覆盖'渲染'

在当前代码中,图像显示为未更改.

谢谢!

java bufferedimage graphics2d

41
推荐指数
1
解决办法
7万
查看次数

如何获得图像的高度和宽度?

为什么下面的代码返回高度:-1表示高度尚未知晓.如何获得图像的高度?

 try {
        // Create a URL for the image's location
        URL url = new URL("http://bmw-2006.auto-one.co.uk/wp-content/uploads/bmw-m3-2006-3.jpg");

        // Get the image
        java.awt.Image image = Toolkit.getDefaultToolkit().createImage(url);

        System.out.println("Height: " + image.getHeight(null));


    } catch (MalformedURLException e) {
    } catch (IOException e) {
    }
Run Code Online (Sandbox Code Playgroud)

java asynchronous image

9
推荐指数
1
解决办法
2万
查看次数

使用paintComponent进行Java幻灯片图像延迟

我正在整理一个幻灯片程序,用于衡量用户在每张幻灯片上花费的时间.幻灯片演示了几个不同的魔术技巧.每个技巧都会显示两次.在重复之间显示临时图像.在每个技巧之间显示过渡图像.

在第一次重复技巧时,在显示下一个图像之前,点击后,JPanel颜色在屏幕上闪烁.在第二次重复相同的技巧期间不会发生这种情况.图像可能需要很长时间才能加载.

是否有一种简单的方法来预加载图像,以便第一次没有延迟?

NOTE: Original code deleted.
Run Code Online (Sandbox Code Playgroud)

编辑2013年1月10日:此代码现在适用于较慢的计算机.trashgod的第二个附录帮助最多.mouseClick控件结构定期要求SwingWorker类加载40个或更少的当前技巧,同时还将使用过的图像设置为null.我已经将我的代码简化为两个Image []并添加了一个main方法,因此它是独立的.仍然需要运行图像.现在这是非常简单的代码,如果你想用大量图片制作幻灯片,我认为这将是一个很好的起点.

注意:我想我在使用多个Image []时想出了如何正确实现SwingWorker.trashgod和kleopatra这个实现符合你的建议吗?我最终没有使用发布和进程,因为我无法弄清楚如何使用索引数组正常工作,但因为StringWorker没有加载数组中的所有图像(只有40)和代码调用StringWorker每20个图像,应该有一个相当不错的缓冲区.

编辑1/10/2013通过在Mouse类上扩展MouseAdapter来改变MouseListener.还修复了我的paintComponent方法,以包含对super.paintComponent(g)的调用.向我的SwingWorker类ImageWorker添加了发布/处理方法.添加了一个包装类ArrayWrapper,允许传递imageArray [i]及其相应的索引int i,并使用publish进行处理.

package slideshow3;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.util.List;

public class SlideShow3 extends JFrame
{
    //screenImage will be replaced with each new slide
    private Image screenImage;
    private int width;
    private int height;

    //Create panel for displaying images using paintComponent()
    private SlideShow3.PaintPanel mainImagePanel;

    //Used for keybinding
    private Action escapeAction;

    //Image array variables for each trick
    private …
Run Code Online (Sandbox Code Playgroud)

java image slideshow swingworker paintcomponent

4
推荐指数
1
解决办法
3010
查看次数