Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript从外部图像获取颜色_Javascript_Image Processing_D3.js_Momentjs_Getpixel - Fatal编程技术网

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

使用JavaScript从外部图像获取颜色,javascript,image-processing,d3.js,momentjs,getpixel,Javascript,Image Processing,D3.js,Momentjs,Getpixel,所以,我在很多地方都试着查找这个问题,但还没有找到适合我的情况的答案 我有一个循环,一年中的每一天,每天每小时循环一次,用许多荒谬的数学方程,得到太阳在特定位置的角度和距离 方程的结果给了我一个数字,我使用这个数字作为x值,以获得图像在该点的像素颜色。图像是一个渐变:当x=0时;当x=(1/2)图像宽度时,无阳光;日出/日落,x=图像宽度时;阳光充足 我让这个代码在处理中工作。虽然我很想只使用Processing.js,但我无法为这个项目提供支持。我正在尝试用和库来构建这个 切中要害: 我需要找

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

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

方程的结果给了我一个数字,我使用这个数字作为x值,以获得图像在该点的像素颜色。图像是一个渐变:当x=0时;当x=(1/2)图像宽度时,无阳光;日出/日落,x=图像宽度时;阳光充足

我让这个代码在处理中工作。虽然我很想只使用Processing.js,但我无法为这个项目提供支持。我正在尝试用和库来构建这个

切中要害:

我需要找出如何从外部(不可见)图像的像素中选择颜色,使用我从方程中获得的值作为图像的x值

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

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


编辑:所有这些都将作为一个网页结束。

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

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

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

在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
    }
}

不幸的是,这些都需要JavaScript、HTML和CSS。没有别的了。我喜欢使用.NET、C++、Python等,但是,我只限于JS、HTML和CSS。嗨,我已经用JavaScript GeimGeDATA()方法更新了我的答案。所以,使用GeMeGeDATA()检索图像中的每个像素,而不显示图像。对吗?另外,如何从中获得特定的像素颜色?您好,是的,这是正确的-getImageData方法使用画布并将像素数据复制到矩形。您可以看到如何使用putImageData方法更改每个像素。例如,在下面的链接中,它反转每个像素的颜色,然后使用putImageData再次绘制。可以从ImageData对象中存储的RGBA值中获取像素颜色。
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
    }
}