Java图像编程之:Graphics

这篇具有很好参考价值的文章主要介绍了Java图像编程之:Graphics。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概念介绍

1、Java图像编程的核心类

Java图像编程的核心类包括:

  1. BufferedImage:用于表示图像的类,可以进行像素级的操作。
  2. Image:表示图像的抽象类,是所有图像类的基类。
  3. ImageIcon:用于显示图像的类,可以将图像嵌入到Swing组件中。
  4. ImageIO:用于读取和写入图像文件的类。
  5. Graphics:用于进行图像绘制操作的抽象类,可以绘制直线、矩形、椭圆等图形。
  6. Graphics2D:继承自Graphics类,提供了更多的绘制方法和功能,可以进行更高级的图像绘制操作。
  7. Color:用于表示颜色的类,可以设置图像的颜色。
  8. Font:用于表示字体的类,可以设置图像的字体样式。

这些类是Java图像编程中常用的核心类,可以帮助你进行图像的处理、显示和绘制操作。

2、Graphics简介

java.awt.Graphics提供了绘制图形和图像的功能。它是Abstract Window Toolkit(AWT)的一部分,用于创建基于图形的用户界面。

通过使用Graphics类,您可以在屏幕上绘制直线、矩形、椭圆、多边形等基本形状,并填充它们的颜色。您还可以绘制图像、文本和其他复杂的图形。

要使用Graphics类,您需要获取一个Graphics对象。您可以通过调用组件的getGraphics()方法来获取该对象,例如JPanel、JFrame、BufferedImage。然后,您可以使用Graphics对象的各种方法来绘制您想要的图形。

除了绘制图形,Graphics类还提供了其他一些方法,如设置颜色、字体和渲染提示等。

3、Graphics主要方法

方法名 描述
void clearRect(int x, int y, int width, int height) 清除指定矩形区域的像素
void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) 绘制一个圆弧
void drawImage(Image img, int x, int y, ImageObserver observer) 在指定位置绘制指定的图像
void drawLine(int x1, int y1, int x2, int y2) 绘制一条直线
void drawOval(int x, int y, int width, int height) 绘制一个椭圆
void drawPolygon(int[] xPoints, int[] yPoints, int nPoints) 绘制一个多边形
void drawRect(int x, int y, int width, int height) 绘制一个矩形
void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) 绘制一个圆角矩形
void drawString(String str, int x, int y) 在指定位置绘制给定字符串
void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) 填充一个圆弧
void fillOval(int x, int y, int width, int height) 填充一个椭圆
void fillPolygon(int[] xPoints, int[] yPoints, int nPoints) 填充一个多边形
void fillRect(int x, int y, int width, int height) 填充一个矩形
void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) 填充一个圆角矩形
Color getColor() 返回当前颜色
Font getFont() 返回当前字体
void setColor(Color c) 设置颜色
void setFont(Font font) 设置字体

这些是Graphics类中最常用的一些方法,可以用于绘制基本形状、图像和文本,并设置颜色和字体等属性。

二、代码示例

以下通过示例代码,演示几个主要的方法使用。

注意:原点坐标是左上角,x轴向右增加,y轴向下增加

1、常用方法演示

ImageUtil工具类

public class ImageUtil {
    public static BufferedImage createImage() {
        int imageWidth = 500;
        int imageHeight = 500;
        return new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_ARGB);
    }
    /**
     * 将图片保存到指定位置
     */
    public static void saveImage2File(BufferedImage image, String fileLocation, String fileName) {
        try {
            File file = new File(fileLocation);
            if (!file.exists()) {
                file.mkdir();
            }
            FileOutputStream fos = new FileOutputStream(fileLocation + fileName);
            BufferedOutputStream bos = new BufferedOutputStream(fos);
            ImageIO.write(image, "png", fos);
            bos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用Graphics图像工具类

    public static void test() {
        BufferedImage bufferedImage = ImageUtil.createImage();
        Graphics g = bufferedImage.getGraphics();
        //设置浅灰色,并绘制背景
        g.setColor(new Color(0XEEEEEE));
        g.fillRect(0,0,500,500);
        //设置颜色
        g.setColor(Color.pink);
        //填充圆形
        // x、y 绘制的左上角坐标,width、height 椭圆的宽、高,如果宽高一致就是圆型
        g.fillOval(10, 50, 100, 100);
        //设置颜色
        g.setColor(Color.ORANGE);
        // 绘制矩形
        // x、y 绘制的左上角坐标,width、height 矩形的宽、高
        g.drawRect(50, 20, 100, 100);
        // 填充绘制圆角矩形
        // x、y 绘制的左上角坐标,width、height 矩形的宽、高
        // arcWidth–四个角处圆弧的水平直径,arcHeight–四个角处圆弧的垂直直径。
        g.fillRoundRect(50, 180, 100, 100,20,20);
        //设置颜色
        g.setColor(Color.RED);
        // 绘制圆弧
        // x、y 绘制的左上角坐标,width、height 宽、高,startAngle 开始的角度,arcAngle 绘制的总角度,绘制角度从右到左计算
        g.drawArc(10, 300, 100, 100, 30, 180);
        //设置颜色
        g.setColor(Color.BLUE);
        // 填充绘制多边形
        // xPoints、yPoints x轴和y轴的坐标数组,分别一一对应组成数个点,nPoints 要绘制的点数
        int[] xPoints = new int[]{200, 300, 400, 300};
        int[] yPoints = new int[]{110, 210, 110, 10};
        int nPoints = 4;
        g.fillPolygon(xPoints, yPoints, nPoints);
        //设置颜色
        g.setColor(Color.YELLOW);
        // 填充3d矩形
        g.fill3DRect(300, 300, 100, 100, true);//画一个线框

        //设置颜色
        g.setColor(Color.DARK_GRAY);
        // 设置字体
        Font font = new Font("微软雅黑", Font.BOLD, 38);
        g.setFont(font);
        // 写文字
        g.drawString("写第一标题", 10, 450);
        ImageUtil.saveImage2File(bufferedImage, "d:/temp/image/", "g01.png");
    }

java graphics,java基础,java,图像处理

2、设置裁剪区域

    public static void test0() {
        BufferedImage bufferedImage = ImageUtil.createImage();
        Graphics g = bufferedImage.getGraphics();
        //设置浅灰色,并绘制背景
        g.setColor(new Color(0XEEEEEE));
        g.fillRect(0,0,500,500);
        //设置颜色
        g.setColor(Color.pink);
        //填充圆形
        g.fillOval(20, 20, 100, 100);
        //设置颜色
        g.setColor(Color.CYAN);
        //设置裁剪区域,设置以后,后续的所有绘制都只会在此区域内有效
        g.setClip(100, 100, 200, 200);
        // 在裁剪区域填充圆型
        g.fillOval(150, 150, 200, 200);
        ImageUtil.saveImage2File(bufferedImage, "d:/temp/image/", "g00.png");
    }

java graphics,java基础,java,图像处理

3、原点坐标转换

    public static void test2() {
        BufferedImage bufferedImage = ImageUtil.createImage();
        Graphics g = bufferedImage.getGraphics();
        //设置浅灰色,并绘制背景
        g.setColor(new Color(0XEEEEEE));
        g.fillRect(0,0,500,500);
        //设置颜色
        g.setColor(Color.pink);
        //重新设置坐标原点,新绘制的图形将以此坐标作为原点
        g.translate(-100, -100);
        //填充圆形,原本应该在中间,经上述转换后,向左上角移动了
        g.fillRect(200, 200, 100, 100);
        ImageUtil.saveImage2File(bufferedImage, "d:/temp/image/", "g03.png");
    }

java graphics,java基础,java,图像处理文章来源地址https://www.toymoban.com/news/detail-787025.html

到了这里,关于Java图像编程之:Graphics的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Open CV 图像处理基础:(一)Open CV 在windows环境初始化和 Java 动态库加载方式介绍

    OpenCV(Open Source Computer Vision Library) 是一个开源的计算机视觉和机器学习软件库,它提供了一系列的工具和程序库,让用户能够进行复杂的图像处理和计算机视觉任务。以下是一些 OpenCV 常用的功能: 图像读取和保存:读取和保存图像文件,支持多种图像格式。 图像处理:包

    2024年02月01日
    浏览(41)
  • 选择最佳图像处理工具OpenCV、JAI、ImageJ、Thumbnailator和Graphics2D

        SVD(stable video diffusion)开放了图生视频的API,但是限制图片分辨率必须为下面三种 1024x576 、 576x1024 、 768x768 。项目基于Fooocus生成的图片分辨率不满足,然后基于ImageIO+Graphics2D处理了一下,修改图片分辨率,然后再去生成视频。功能调通了,但是发现图片清晰度严重下降

    2024年03月27日
    浏览(46)
  • 【Java万花筒】Java图像魔法:图像处理与计算机视觉库全指南

    在当今数字时代,图像处理和计算机视觉成为了许多应用领域的关键技术。本文将深入介绍几款Java图像处理与计算机视觉库,为开发者提供全面的了解和实践指导。 欢迎订阅专栏:Java万花筒 1. Java Advanced Imaging (JAI) 1.1 概述 Java Advanced Imaging(JAI)是Java平台上一款强大的图像

    2024年01月18日
    浏览(77)
  • Halide 高效的图像处理语言 简化图像编程

    github源码 Halide是用C++作为宿主语言的一个图像处理相关的DSL(Domain Specified Language)语言,全称领域专用语言。 主要的作用为在软硬层面上(与算法本身的设计无关)实现对算法的底层加速,我们有必要对其有一定的了解。 因为不论是 传统的图像处理方法亦或是深度学习应用 都使

    2024年04月26日
    浏览(43)
  • 轻松入门数字图像处理,搞定OpenCV编程!

    在刚开始学习数字图像处理时,你是否也有这样的困扰: 教材的开篇介绍绪论和数学工具,看得似懂非懂,似乎还不涉及编程…… 接下来学习灰度变换、空间滤波和频域滤波,涉及内容丰富、方法繁多,试着编了几个程序就编不下去了…… 开始学习OpenCV,找了几本参考书,

    2024年02月09日
    浏览(52)
  • PDF处理控件Aspose.PDF功能演示:使用Java将Base64字符串转换为PDF/JPG/PNG图像

    Aspose.PDF  是一款高级PDF处理API,可以在跨平台应用程序中轻松生成,修改,转换,呈现,保护和打印文档。无需使用Adobe Acrobat。此外,API提供压缩选项,表创建和处理,图形和图像功能,广泛的超链接功能,图章和水印任务,扩展的安全控件和自定义字体处理。 Aspose API支持

    2024年02月04日
    浏览(85)
  • 基于Java(SpringBoot框架)毕业设计作品成品(33)AI人工智能毕设AI常用数字图像图片特效处理系统设计与实现

    博主介绍: 《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月08日
    浏览(48)
  • 【OpenCV】 基础入门(二)图像基础概念 | 图像灰度化处理 | 图像二值化处理

      在计算机中用一般用 M x N 的矩阵来表示一幅尺寸大小为 M x N 的数字图像,矩阵元素的值就是该图像对应位置上的像素值。    对于计算机本地磁盘中的彩色图像,单机鼠标右键,选择“属性”,可以看到一幅图像的基本信息。 1、灰度图:   灰度图是每个像素只有一

    2024年04月14日
    浏览(51)
  • opencv-图像处理基础-二值图像

    1.二值图像 二值图像是指仅仅包含黑色和白色两种颜色的图像。 在计算机中,通过一个栅格状排列的数据集(矩阵)来表示和处理图像。例如,图 2-1 是 一个字母 A 的图像,计算机在处理该图像时,会首先将其划分为一个个的小方块,每一个小方 块就是一个独立的处理单位

    2024年02月15日
    浏览(57)
  • python图像处理实战(一)—图像基础

    🚀写在前面🚀 🖊个人主页:https://blog.csdn.net/m0_52051577?type=blog  🎁欢迎各位大佬支持点赞收藏,三连必回!! 🔈本人新开系列专栏—python图像处理 ❀愿每一个骤雨初晴之时,所有的蜻蜓振翅和雨后惊雷,都归你。 目录 一、前言 二、认识图像  三、用到的库  (1)Numpy

    2024年02月09日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包