迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 中的裁剪图像

作者:迹忆客 最近更新:2023/07/16 浏览次数:

图像裁剪经常用于删除图像中的干扰部分。 您可以裁剪图像以引起人们对框架中特定对象的注意,本文将教您如何以编程方式在 Java 中裁剪照片。

尽管付费工具有很多用途并且可以节省时间,但当我们可以在几天内完成它时,尝试总是值得的。 这篇文章主要针对初学者,他们可以通过避免使用昂贵的第三方工具来省钱。 我们将使用 BufferedImage 类中的 subimage 函数在 Java 中裁剪图像。


使用 BufferedImage 类在 Java 中裁剪图像

创建这些示例时考虑了 BufferedImage 类。

BufferedImage 类的 getSubimage() 方法的语法:

public BufferedImage getSubimage(int X, int Y, int width, int height)

此代码将返回一个子图像,其矩形区域由过去的输入确定。 下面是四个参数的说明。

参数 说明
X 提供所选矩形区域左上角的 x 坐标。
Y 提供左上角指定矩形区域的 y 坐标。
Height 指定矩形区域的高度。
Width 定义矩形区域的宽度。

以下是我们要裁剪的图像。

原始图像

代码示例:

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Main{
public static void main(String []args){
  File imageFile = new File("/D:/test/image.jpg");
  BufferedImage bufferedImage =null;
  try
      {
      bufferedImage = ImageIO.read(imageFile);
      BufferedImage image=bufferedImage.getSubimage(0,0,50,50);
      File pathFile = new File("/D:/test/image-crop.jpg");
      ImageIO.write(image,"jpg", pathFile);
    }
  catch (IOException e)
      {
          System.out.println(e);
      }
   }
}

输出:

Java 中裁剪图像

请注意 ,我在第 10 行和第 16 行中提供了我的文件位置,但您必须提供文件位置。 此外,您可以允许用户在运行时提供 X、Y、宽度和高度值,从而为您的代码提供额外的灵活性。

这里我们正在寻找另一个例子,要裁剪图像,我们需要一些Java中的类。 以下是在 Java 中裁剪图像之前需要导入的类。

您必须导入 File 类才能读取和写入图像文件。 此类通常表示文件和目录的路径名。

Import java.io.File

IOException 类用于处理错误。

Import java.io.IOException

我们使用 BufferedImage 类来构建 BufferedImage 对象,该对象保存图像。

import java.awt.image.BufferedImage

我们将导入ImageIO类来对图像进行读写操作。 本课程提供静态图像读取和写入技术。

import javax.imageio.ImageIO

使用 BufferedImage 类的几个内置方法。

// importing the necessary packages
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

// Main class
public class GFG {

    // Main driver method
    public static void main(String[] args)
    {
        // Using a try block, look for exceptions
        try {

            // Reading the original image from the local path by
            // creating an object of BufferedImage class
            BufferedImage originalImg = ImageIO.read(
                new File("D:/test/Image.jpeg"));

            // Fetching and printing alongside the
            // dimensions of original image using getWidth()
            // and getHeight() methods
            System.out.println("Original Image Dimension: "
                               + originalImg.getWidth()
                               + "x"
                               + originalImg.getHeight());

            // Creating a subimage of given dimensions
            BufferedImage SubImg
                = originalImg.getSubimage(50, 50, 50, 50);

            // Printing Dimensions of the new image created
            System.out.println("Cropped Image Dimension: "
                               + SubImg.getWidth() + "x"
                               + SubImg.getHeight());

            // Creating a new file for the cropped image by
            // creating an object of the File class
            File outputfile
                = new File("D:/test/ImageCropped.jpeg");

            // Writing image in the new file created
            ImageIO.write(SubImg, "png", outputfile);

            // Display message on console representing
            // proper execution of program
            System.out.println(
                "Cropped Image created successfully");
        }

        // Catch block to handle the exceptions
        catch (IOException e) {

            // Print the exception along with the line number
            // using printStackTrace() method
            e.printStackTrace();
        }
    }
}

此外,程序执行后,控制台将在指定路径显示执行消息和新创建的裁剪图像。


总结

您已经清楚地了解了如何在 Java 中裁剪图像。 我们已经展示了如何裁剪其矩形区域由几种不同方法中的过去输入确定的图片,以及如何使用 BufferedImage 类及其其他内置方法在 Java 中裁剪图像。

此外,您可以使用文档来了解有关 Java 图像裁剪的更多信息。 既然您已经阅读了本页,您可能知道什么是图像裁剪。

它只是删除图像的外部部分以改善框架、改变纵横比等。现在您可以使用给定的 Java 代码非常快速地完成此操作。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便