如何获取PNG图片某点像素的rgba值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取PNG图片某点像素的rgba值相关的知识,希望对你有一定的参考价值。
参考技术A 参数data指向绘图操作被渲染的内存区域,这个内存区域大小应该为(bytesPerRow*height)个字节。如果对绘制操作被渲染的内存区域并无特别的要求,那么可以传递NULL给参数date。 参数width代表被渲染内存区域的宽度。 参数height代表被渲染内存区域的高度。 参数bitsPerComponent被渲染内存区域中组件在屏幕每个像素点上需要使用的bits位,举例来说,如果使用32-bit像素和RGB颜色格式,那么RGBA颜色格式中每个组件在屏幕每个像素点上需要使用的bits位就为32/4=8。 参数bytesPerRow代表被渲染内存区域中每行所使用的bytes位数。 参数colorspace用于被渲染内存区域的“位图上下文”。 参数bitmapInfo指定被渲染内存区域的“视图”是否包含一个alpha(透视)通道以及每个像素相应的位置,除此之外还可以指定组件式是浮点值还是整数值。本回答被提问者采纳如何从imageview中的png获取特定颜色的所有像素
我试图从imageview中的图像获取特定颜色的所有像素。甚至可以做那样的事情吗?如果是的话,请指出我正确的方向。下面是我的image
我需要红点所在的所有像素和绿点的所有像素。这可能吗?我不需要知道给定像素的颜色。我需要打印包含红点的所有像素。谢谢。如果问题不明确,请不要投票。
答案
我认为您可以轻松地将图片转换为灰度并在直方图中进行描绘。每个像素被分配到0-255之间的对应值。使用此信息,您可以提取所有红色和绿色像素。
你应该寻找OpenCV4Android:
以下是OpenCV的概述: https://docs.opencv.org/3.1.0/d1/db7/tutorial_py_histogram_begins.html
安装Android指南: https://medium.com/@sukritipaul005/a-beginners-guide-to-installing-opencv-android-in-android-studio-ea46a7b4f2d3
另一答案
Vladyslav Matviienko说,您可以遍历所有像素并检查它们的颜色。
- 显示你的照片
- 创建一个字典
- 迭代所有像素
- 获取当前像素的颜色
- 如果您的词典已包含当前颜色,请将其添加到数组中(哪个键是颜色)
- 如果字典不包含当前颜色,则实例化一个数组(该键是颜色),然后为其添加颜色。
例:
const canvas = document.querySelector('#canvas');
const ctx = canvas.getContext('2d');
const pixels;
function draw(canvas, ctx) {
ctx.fillStyle = '#fff';
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 3, 3);
ctx.fillRect(0, 10, 3, 3);
ctx.fillStyle = '#00f';
ctx.fillRect(10, 0, 3, 3);
ctx.fillRect(10, 10, 3, 3);
}
function getPixelsByColors(canvas, ctx) {
let pixel;
let color;
let dict = {};
for (let i = 0; i < canvas.width; i++) {
for (let j = 0; j < canvas.height; j++) {
pixel = ctx.getImageData(i, j, 1, 1);
color = getColorFromPixel(pixel);
if (!dict[color]) {
dict[color] = [];
}
dict[color].push({ x: i, y: j });
}
}
return dict;
}
function getColorFromPixel(pixel) {
let red = pixel.data[0];
let green = pixel.data[1];
let blue = pixel.data[2];
let alpha = pixel.data[3];
let color = red + '-' + green + '-' + blue + '-' + alpha;
return color;
}
draw(canvas, ctx);
pixels = getPixelsByColors(canvas, ctx);
console.log('pixels', pixels);
试试吧(这是一个jsfiddle,在控制台中显示字典的内容)。
以上是关于如何获取PNG图片某点像素的rgba值的主要内容,如果未能解决你的问题,请参考以下文章