【问题标题】:Get pixel color from an image从图像中获取像素颜色
【发布时间】:2013-07-21 06:38:15
【问题描述】:

我在浏览器上有一张图片。

无论图像是否旋转,我都想获取图像颜色的左上角像素(坐标:0,0)。

我怎样才能做到这一点,使用 javascript 或 php 代码?

【问题讨论】:

标签: javascript image pixel


【解决方案1】:

对于浏览器上的图像,您不能使用 PHP,除非您可以先将图像传输到服务器。

在浏览器中,如果您可以在canvas 中绘制图像,则可以使用getImageData() 方法:

var myImg = new Image();
myImg.src = 'image.jpg';
var context = document.getElementById('canvas').getContext('2d');
context.drawImage(myImg, 0, 0);
var data = context.getImageData(x, y, 1, 1).data;

您必须允许任何轮换 - 大概您知道应用了什么轮换。

【讨论】:

  • 画布尺寸必须设置为大于或等于图像宽度。否则画布分辨率之外的像素将显示为黑色,即使它们不是
【解决方案2】:
  • 创建画布 document.createElement
  • 获取二维上下文canvas.getContext('2d')
  • 将图像绘制到画布上context.drawImage(image, x, y)
    • 确保图片来自同一个域,否则您将无法访问其像素
  • 获取图像context.getImageData(x1, y1, x2, y2)的像素数据
    • 你只想要左上角所以context.getImageData(0, 0, 1, 1)
  • getImageData 的结果将在其data 字段(context.getImageData(0,0,1,1).data 中有一个像素数组)
    • 该数组将具有rgba 值。

【讨论】:

  • 谢谢。我认为你应该得到一个非常快速的答案的奖励。什么情况,如果浏览器不支持html5。 php代码有解决办法吗?
  • @Eitan - 如果不支持画布,那么您需要将图像(带有 AJAX 请求)传递给服务器,以使用服务器端代码获取像素数据或使用一些 Flash/ Silverlight 可憎处理它。
  • 还有一点需要注意:由于色彩空间校正,使用 drawImage 渲染的像素值可能与图像中的值不同。好在只有图像包含色彩空间信息时才会发生这种情况。
  • 画布尺寸必须设置为大于或等于图像宽度。否则画布分辨率之外的像素将显示为黑色,即使它们不是
  • @DaMaxContent - 问题专门用于获取左上角像素,但对于一般情况,您必须适当调整画布大小或简单地使用 2d 上下文的 drawImage() 方法的重载剪辑参数.
猜你喜欢
  • 2019-07-27
  • 1970-01-01
  • 2014-12-06
  • 1970-01-01
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多