2014-11-03 34 views
2

所以,我試圖在很多地方查找這個,但還沒有找到我的情況的答案。使用JavaScript從外部圖像獲取顏色

我所擁有的是一個循環,一年中每天每天循環一小時,還有許多瘋狂的荒謬數學方程式,在特定位置獲取太陽的角度和距離。

方程的結果給了我一個號碼,我X值使用來獲得在該點圖像的像素顏色。圖像是一個漸變:當x = 0;當x =(1/2)imageWidth時沒有陽光;日出/日落,當x = imageWidth;充足的陽光。

我有這段代碼在Processing中工作。儘管我很喜歡使用Processing.js,但我無法完成此項目。我正在嘗試使用D3Moment庫來構建此庫。

給點:

我需要從外部(可見)圖像的像素找出如何挑選顏色,使用值I從方程式的x值獲得圖片

我有我需要的價值。我只需要幫助計算出如何獲取在圖像的特定x位置不可見的圖像像素的顏色。然後,我將使用該顏色作爲填充顏色的圓圈

我意識到這可能不是理想的措辭。用JavaScript編寫荒謬的數學公式很難讓我擡起頭來,然後詢問關於獲取外部圖像的像素顏色值的問題。但是,我希望有人能幫助我!

編輯:這一切將最終成爲一個網頁。

回答

1

有2種方式來做到這一點 - 在Javascript和淨

使用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 
    } 
} 
+0

不幸的是,這一切都需要JavaScript,HTML和CSS。沒有其他的。我很喜歡使用.NET,C++,Python等。但是,我僅限於JS,HTML和CSS。 – brettwbyron 2014-11-03 22:44:26

+0

嗨,我用javascript getImageData()方法更新了我的答案。 – 2014-11-03 22:59:24

+0

因此,使用getImageData()檢索圖像中的每個像素,並且不顯示圖像。那是對的嗎? 另外,我怎樣才能從這個特定的像素顏色? – brettwbyron 2014-11-04 03:24:40