使用JavaScript从外部图像获取颜色

Getting color from external image using JavaScript

本文关键字:获取 颜色 图像 从外部 JavaScript 使用      更新时间:2023-09-26

所以,我试过在很多地方查找这个,但还没有找到适合我的情况的答案。

我所拥有的是一个循环,一年中的每一天,每天每一个小时都在循环,用许多疯狂荒谬的数学方程,得到太阳在特定位置的角度和距离。

方程的结果给了我一个数字,我将其用作x值,以获得图像在该点的像素颜色。图像是一个梯度:当x=0时;没有阳光,当x=(1/2)imageWidth时;日出/日落,当x=imageWidth时;阳光充足。

我在Processing中使用了此代码。虽然我很想只使用Processing.js,但我不能用于这个项目。我正在尝试用D3和Moment库来构建这个。

切中要害:

我需要弄清楚如何从外部(可见)图像的像素中提取颜色,使用我从方程中获得的值作为图像的x值

我有我需要的价值。我只需要帮助如何获得在图像的特定x位置不可见的图像像素的颜色。然后我将使用该颜色作为圆的填充颜色

我意识到这可能不是一个理想的措辞。用JavaScript编写荒谬的数学方程,然后问关于获取外部图像像素颜色值的问题,这有点困难。但是,我希望有人能帮助我!

编辑:这一切都将以网页的形式结束。

有两种方法可以做到这一点-在Javascript和.Net 中

使用Javascript,在画布中绘制图像,然后使用getImageData()方法:

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

http://msdn.microsoft.com/en-us/library/ie/ff975418(v=vs.85).aspx

.Net中还有一个有用的方法,称为Bitmap.GetPixel方法。如果您有权访问.Net,则可能值得编写或调用可执行文件来运行此方法并将值存储在表中,作为一个单独的进程,例如控制台ap或调用直接传递环境变量的exe。如果.Net不可能,我深表歉意,因为我知道这是对您问题的间接回答。

http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.getpixel(v=vs.110).aspx

在system.drawing名称空间中,可以声明一种颜色,然后比较该颜色以查看它是否为图像中的颜色。

public Color GetPixel(
    int x,
    int y
)
private void GetPixel_Example(PaintEventArgs e)
{
    // Color to compare
    Color compareColor = Color.Blue;
    // Create a Bitmap object from an image file.
    Bitmap myBitmap = new Bitmap("YourImage.jpg");
    // Get the color of a pixel within myBitmap.
    Color pixelColor = myBitmap.GetPixel(50, 50);
    If(pixelColor == compareColor)
    {
        //do something
    }
}