当前位置: 首页 > 知识库问答 >
问题:

Java ImageIO声明图像

子车桐
2023-03-14

我正在开发一个每隔一段时间重新加载一个图像的应用程序。我这样做是为了在外出途中做出改变。我用的是ImageIO。读取(路径)以读取图像文件

现在,当我想用我的颜料改变图像时。NET并尝试保存(覆盖)图像,绘制。NET抛出一个IOException。这可能是因为ImageIO只是在进程运行时声明图像是他的。但我就是这么想的。

代码如下:

public int width, height;
public int[] pixels;

public Sprite(String ref) {
    try {
        BufferedImage image = ImageIO.read(new FileInputStream(ref));
        width = image.getWidth();
        height = image.getHeight();
        pixels = new int[width * height];
        pixels = image.getRGB(0, 0, width, height, pixels, 0, width);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

有人知道怎么解决这个问题吗?

谢谢

共有1个答案

司马腾
2023-03-14

在Windows上(我假设您使用的是Windows,正如您提到的,您使用的是Paint.NET),保留一个文件尤其有问题,因为它会阻止其他应用程序写入同一个文件。很可能,这就是您遇到的问题。

当你打开一个流,就像你在这里做的:

new FileInputStream(ref);

获取本机文件指针。您有责任在使用后再次关闭它,释放文件指针。现在,ImageIO. read(InputStream)应该为您关闭流,但是在某些情况下和Java的某些版本中,存在与此相关的错误。如果流没有正确关闭,Java进程将保留此文件指针作为最坏情况,直到Java进程终止。

好消息是,如果您只需将代码更改为:

BufferedImage image = ImageIO.read(new File(ref));

然后,ImageIO将始终负责流的打开和关闭。

 类似资料:
  • 问题内容: 我试图在Go中声明为constant,但是它抛出一个错误。有人可以在Go中声明常量的语法帮助我吗? 这是我的代码: 这是错误 问题答案: 您的语法不正确。要制作文字映射(作为伪常量),可以执行以下操作: 在a中,您可以这样声明: 在Go中,没有常量映射之类的东西。可以在 此处 找到更多信息。 在Go游乐场尝试一下。

  • 2.2. 声明 声明语句定义了程序的各种实体对象以及部分或全部的属性。Go语言主要有四种类型的声明语句:var、const、type和func,分别对应变量、常量、类型和函数实体对象的声明。这一章我们重点讨论变量和类型的声明,第三章将讨论常量的声明,第五章将讨论函数的声明。 一个Go语言编写的程序对应一个或多个以.go为文件后缀名的源文件中。每个源文件以包的声明语句开始,说明该源文件是属于哪个包。

  • 本页包含内容: 模块范围 代码块 引入声明 常量声明 变量声明 类型的别名声明 函数声明 枚举声明 结构体声明 类声明 协议声明 构造器声明 析构声明 扩展声明 下标脚本声明 运算符声明 声明修饰符 一条声明可以在你的程序里引入新的名字和构造。举例来说,你可以使用声明来引入函数和方法,变量和常量,或者来定义 新的命名好的枚举,结构,类和协议类型。你也可以使用一条声明来延长一个已经存在的命名好的类型

  • 这里需要说明一下,笔者不建议在Windows环境下进行深度学习的研究,一方面是因为Windows所对应的框架搭建的依赖过多,社区设定不完全;另一方面,Linux系统下对显卡支持、内存释放以及存储空间调整等硬件功能支持较好。如果您对Linux环境感到陌生,并且大多数开发环境在Windows下更方便操作的话,希望这篇文章对您会有帮助。 关于计算机的硬件配置说明 推荐配置 如果您是高校学生或者高级研究人

  • 本教程不得用于任何形式的商业用途,如果需要转载请与作者SCP-173联系,如果发现未经允许复制转载,将保留追求其法律责任的权利。 关于计算机的硬件配置说明 推荐配置 如果您是高校学生或者高级研究人员,并且实验室或者个人资金充沛,建议您采用如下配置: 主板:X99型号或Z170型号 CPU:i7-5830K或i7-6700K 及其以上高级型号 内存:品牌内存,总容量32G以上,根据主板组成4通道或8

  • 一旦获得连接,我们就可以与数据库进行交互。 JDBC Statement, CallableStatement,和PreparedStatement接口定义了使您能够发送SQL或PL/SQL命令以及从数据库接收数据的方法和属性。 它们还定义了有助于桥接数据库中使用的Java和SQL数据类型之间的数据类型差异的方法。 下表提供了每个接口确定要使用的接口的目的的摘要。 接口 推荐用途 Statemen