Unity实用功能之获取图片指定像素点的颜色

1,540 阅读2分钟

「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」。

概述

上一篇文章我们介绍到使用openCV插件,获取到鼠标点击的图像的对应像素点的颜色,本篇文章我们仍然介绍获取图片指定像素点的颜色,但是并不是使用OpenCV插件,而是使用Unity的Texture2D.GetPixel来进行获取。

效果展示

0119.gif ps:注意看右下角的颜色条,就是获取到的颜色。有一下变绿是写的测试代码( ̄ェ ̄;)和效果无关

Texture2D.GetPixel

Unity的Texture2D.GetPinxel的功能是返回坐标 (x, y) 上的像素颜色。而获取的坐标是从左下角开始。和Input.mousePosition相同。

注意:如果想要使用GetPinxel,那么Texture的格式必须要进行设置:图片必须要设置为可读写模式,否则无法进行颜色读取

image.png

获取颜色

场景搭建

场景的搭建仍然身份的简单,场景中放一个RawImage,将我们要获取颜色图片放到RawImage上,然后新建脚本,进行像素颜色获取。

image.png

脚本编写

首先定义两个变量,一个是Texture2D:用来进行颜色拾取的图片,一个是Color:用来显示提取出来的颜色

private Texture2D _texture;
public Color _color;

紧接着获取,RawImage上的Texture,用来进行颜色拾取

_texture = GetComponent<RawImage>().texture as Texture2D;

接下来就是要进行颜色拾取了。先来看一下GetPixel是如何使用的。

image.png 通过上图我们可以看出,GetPixel返回的直接就是一个Color,而通过查看API知道,x,y两个参数就是我们要获取颜色的像素点的位置,所以我们可以直接将鼠标点击的位置传进去。

注意:本篇文章使用的图片大小是1920×1080和场景的大小是一样,所以直接使用鼠标的输入坐标,如果图片的大小和场景的大小不相同,那么就要进行相对应的换算,这个会在后期的分享中进行介绍(很快就会出现的)
言归正传,一起来看一下获取对应像素点的颜色代码

_color = _texture.GetPixel((int)Input.mousePosition.x, (int)Input.mousePosition.y);

就是如此的简单就实现了获取对应像素点的颜色功能。

写在最后

所有分享的内容均为作者在日常开发过程中使用过的各种小功能点,分享出来也变相的回顾一下,如有写的不好的地方还请多多指教。欢迎大家相互学习进步。本片文章就先写到这里,希望对你能够有所帮助.欢迎大家在下方留言讨论,想要源文件的也可以在下方进行留言。