读取图片输出字符图案:用字符输出足球的图案

news2024/12/22 18:23:44

用字符输出足球的图案

  • 前言
  • 功能描述
  • 实现思路
  • 代码实现
    • 1️⃣ 获取像素点的RGB数值
    • 2️⃣ 判断每个像素点的RGB值是否符合
    • 3️⃣ main方法
  • 结果测试

前言

世界杯,如火如荼的进行着,作为程序员也参加一下活动,蹭一下世界杯的热度


功能描述

通过读取足球图案,在控制台使用字符输出同样的足球图案轮廓,当然我选择了色彩尽可能单一的图案,这样就不需要太多的判断,又能说明白主要的代码逻辑
足球图案:
在这里插入图片描述


实现思路

1、获取图案每个像素点的RGB数值
2、当RGB数值符合图案中足球轮廓的颜色时,输出1,不符合的输出0,这样足球的轮廓的位置都会填上1,从而现实出足球的轮廓


代码实现

1️⃣ 获取像素点的RGB数值

使用java.awt.Color类中的getRGB方法,可以得到像素点的RGB数值

private static void printFootballChars(BufferedImage b){
        int width = b.getWidth();
        int height =b.getHeight();
        for (int y = 0; y < height; y++) {
            System.out.println();//每读取一行之后,进行换行
            for (int x = 0; x < width; x++) {
                Color color = new Color(b.getRGB(x,y));
                int red = color.getRed();
                int blue = color.getBlue();
                int green = color.getGreen();
                //判断是否需要输出1
                if(isPoint(red,blue,green)){
                    System.out.print("1");
                } else {
                    System.out.print("0");
                }
            }
        }
    }

2️⃣ 判断每个像素点的RGB值是否符合

由于我选择的图案色彩比较单一,所以验证像素点是否符合的条件也就比较简单
1、当RGB三个数值,都大于200时,我们认为是白色
2、当red、green、blue三个颜色互相的差值小于10时,我们认为是黑白灰,也就是图案中足球的轮廓颜色

private static boolean isPoint(int red,int blue,int green){
        if(red > 200 && blue > 200 && green > 200){
            return false;
        }
        return Math.abs(red - blue) < 10 && Math.abs(red - green) <10 && Math.abs(blue - green) <10;
    }

3️⃣ main方法

public static void main(String[] args) {
        try{
            BufferedImage bufferedImage = ImageIO.read(new File("C:\\Users\\cjyou\\Desktop\\68c9ea2cffc9d1c84e6f5971078d6b8a.jpeg"));
            printFootballChars(bufferedImage);
        }catch(Exception e){
            System.out.println(e);
        }
    }

结果测试

在这里插入图片描述
我们可以将内容拷贝到记事本中,就可以看得清楚一点了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/65976.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

跨行新手学习并备考阿里云云计算专业认证ACP大概需要多长时间呢?

先来了解一下阿里云认证&#xff1a; 阿里云认证是基于核心技术及岗位的权威认证&#xff0c; 阿里云针对不同产品类别、用户成长阶段、生态岗位&#xff0c;精心打造不同的认证考试。 个人&#xff1a;证明您在对应技术领域的专业度&#xff0c;能够基于阿里云产品解决实际问…

(附源码)spring boot投票系统 毕业设计 261136

基于springboot投票系统 摘 要 在科学管理机制越来越完善的今天&#xff0c;投票管理者只能依赖手工记录数据,这不仅仅浪费时间&#xff0c;并且对人力也是一种浪费&#xff0c;不能做到随时监控&#xff0c;对数据的准确性和及时性也是一种影响。所以投票非常急需一套既有与时…

Python到底适合什么后端团队和项目?

前言 1、我的Python从业经历 本人从2015年开始基本上都在使用Python语言&#xff0c;主要做扫描器、分布式任务、后台接口、AI、图像和3D点阵处理、数据接收处理等等&#xff0c;也待过几个公司&#xff0c;所在部门基本上也是多种语言的开发小组都有&#xff0c;统计了下如下…

JAVA五子棋手机网络对战游戏的设计与实现(源代码+论文)

五子棋网络对战游戏的设计与实现 论文作者姓名&#xff1a;申请学位专业&#xff1a;申请学位类别&#xff1a;指导教师姓名&#xff08;职称&#xff09;&#xff1a;论文提交日期&#xff1a; 五子棋网络对战游戏的设计与实现 摘 要 在现代社会中,及其它无线设备越来越多的…

铁矿行业BI经营分析框架(四)经营分析

在中国大部分的铁矿企业集团都是有央国企背景的&#xff0c;都是属于一个大集团下的二级集团性企业。所以&#xff0c;首先是需要背上集团下发的经营业绩指标的&#xff0c;这个一定是整个经营管理分析的核心要重点关注。 业绩情况 第一个分析要点就是这家企业集团在整个集团中…

Matplotlib入门[04]——处理图像

Matplotlib入门[04]——处理图像 参考&#xff1a; https://ailearning.apachecn.org/Matplotlib官网 图片来源&#xff1a;百度&#xff08;如有侵权&#xff0c;立删&#xff09; 使用Jupyter进行练习 import matplotlib.pyplot as plt import matplotlib.image as mpimg imp…

sqlserver时间字段索引失效,重建后索引又正常了

文章目录前言索引相关操作1 、查看全部索引信息2 、重建所有表索引3 、查看某个表索引信息4 、重建某个表索引查询索引字段说明执行修复索引字段前言 这几天被一个项目搞得烦死了&#xff0c;客户老是反馈后台查询前一天注册的用户数据失败&#xff0c;看了错误日志&#xff0…

【Java面试】能说说你对volatile关键字的理解吗?

文章目录volatile能否保证线程安全&#xff1f;原子性可见性有序性volatile能否保证线程安全&#xff1f; 下文使用到了javap命令进行class文件的反汇编来查看字节码&#xff0c;如果想要了解的可以学习一下javap命令。 什么是javap命令 javap命令的参数 要解决这个问题首先要…

【数据库】数据库的慢查询问题

现象&#xff1a; 在压测过程中发现接口返回数据非常慢&#xff0c;甚至超时&#xff0c;页面加载不出数据 问题定位&#xff1a;如果有慢查询怎么恢复&#xff1f; 1.查看服务日志&#xff0c;打印连接数据库超时&#xff0c;接口返回超时 查看数据库所在节点cpu占用很高使…

夯实算法-跳跃游戏

题目&#xff1a;LeetCode 给定一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例 1&#xff1a; 输入&#xff1a; nums [2,3,1,1,4] 输出&#xff1a; tru…

【测试沉思录】23. 如何实现基于场景的接口自动化测试用例?

作者&#xff1a;陈爱娇 编辑&#xff1a;毕小烦 自动化本身是为了提高工作效率&#xff0c;不论选择何种框架&#xff0c;何种开发语言&#xff0c;我们最终想实现的效果&#xff0c;就是让大家用最少的代码&#xff0c;最小的投入&#xff0c;完成自动化测试的工作。 基于这…

EMQ 宣布推出 LF Edge eKuiper 全新 Logo 标识

全球领先的开源物联网数据基础设施软件供应商 EMQ 映云科技宣布,即日起,将正式启用全新的 LF Edge eKuiper(以下简称 eKuiper)产品 Logo。焕然一新的 eKuiper 产品 Logo 标志着 EMQ 在不断提升品牌全球化战略之上,对于打造高性能、高可用、高安全的世界级开源软件产品的极致追求…

关于密码设置

使用一个密码并在数据泄漏时保护自己的其它账号 关于密码 现在好多软件&#xff0c;好多网站都需要我们设置密码&#xff0c;这个时候我们的处理办法一般分为2种。 对不同的软件设置不同的密码&#xff0c;这种理论上是最安全的&#xff0c;但是记不住啊&#xff0c;所以不实…

Letbook Cookbook题单——数组二分与双指针

Letbook Cookbook题单——数组二分与双指针 1. 两数之和 难度&#xff1a;简单 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。…

Locust学习记录5-任务属性【Task】

Task 当负载测试开始时&#xff0c;将为每个模拟用户创建一个User类的实例&#xff0c;他们将开始在自己的绿色线程中运行。当这些用户运行时&#xff0c;他们选择他们执行的任务&#xff0c;休眠一段时间&#xff0c;然后选择一个新任务。 这些任务时普通的python可调用文件…

windows环境下python连接openGauss数据库

文章目录一、python 介绍二、Python下载及安装三、openGauss Connectors &#xff08;Psycopg2&#xff09; 介绍四、openGauss Connectors &#xff08;Psycopg2&#xff09;下载并初始化五、连接并访问openGauss数据库六、问题总结&#xff08;FAQ&#xff09;一、python 介绍…

Maven学习笔记

Maven Maven是一个项目管理工具依赖管理 传统工程中我们直接把jar包放在项目中maven工程真正的jar包放在仓库中&#xff0c;项目中只防止jar包的坐标 一键构建 maven自身集成了tomcat插件&#xff0c;可以对项目进行编译、测试、打包、安装、发布等操作 仓库的种类 本地仓库远程…

计算机毕业论文java毕业设计选题源代码ssm校园兼职系统|求职招聘系统

&#x1f496;&#x1f496;更多项目资源&#xff0c;最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 3.1 需求分析 校园兼职系统主要是为了提高工作人员的工作效率和更方便快捷的满足用户&#xff0c;更好存储所有数据信息及快速方便的检索功能&am…

人工智能与机器学习

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 人工智能与机器学习&#x1f4dd;人工智能相关概念☞什么是人工智能、机器学习、深度学习☞人工智能发…

思科防火墙NAT——实验

作者简介&#xff1a;一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 1.实验 防火墙配置 其他配置 前言 本章将会讲解思科NAT配置的…