2010-01-01 24 views
1

假設有3個圈:紅色,藍色,黑色。如何使用PHP或Ruby從圖像中移除某些顏色?

我只想要黑圈保持。我怎樣才能去掉紅色和藍色的圈子?

+2

你想在這裏解決什麼問題?請告訴我們,您不是在尋找逃避CAPTCHA的方法。 – 2010-01-01 09:10:06

+0

+1對於偏執:) – AntonioCS 2010-01-01 22:39:04

回答

7

既然你問了一個PHP的解決方案:

  • 首先加載圖片與imagecreatefrompng或其他圖像格式
  • 類似的功能之後,使用imagesximagesy來獲得圖像的大小。現在
  • ,你可以通過

    for ($i = 0; $i < $imageWidth; $i++) { 
        for ($j = 0; $j < $imageHeight; $j++) { 
         // check color and replace 
        } 
    } 
    
  • 遍歷所有像素最後,使用imagecolorat,使色彩(檢查它是否是在一個特定的範圍,不採取黑作爲一個良好的色彩,而且,在紅,綠,藍爲例)

  • 每個值都> = 250所有的顏色...和imagecolorset設置顏色
  • 現在您可以保存次例如使用imagepng的圖像。
+0

+1對於使用純粹的php解決方案 – AntonioCS 2010-01-01 22:37:54

+1

你好Etan,我知道這是一箇舊的帖子,但你能詳細說明裏面//檢查顏色和替換?我是PHP新手謝謝 – 2012-11-04 06:04:59

0

如果您知道正在使用的圖像格式,你可能會使用這些信息來避免通過像素值(可能破壞圖像質量)訪問,否則做一些與此類似:

  1. 弄個作爲像素陣列的圖像
  2. 在每個像素上映射,如果它位於要移除的任何顏色的某個閾值之內,則將其設置爲背景顏色。

這依賴於在任何時候都有一個給定的背景顏色可以設置像素,並且您可以識別要移除的顏色。

1

ImageMagick會做到這一點。只是掏腰包給這個命令:

convert circles.png -channel black -white-threshold 10% circles2.png 

你沒有說出如何處理綠色。該腳本採用簡單的方式,並消除了綠色。事實上,它消除了任何不黑的東西。

這個RMagick libary可以讓你用Ruby驅動imagemagick。可悲的是,它並不適用於我的發行版,所以我無法爲你準備一個例子。但是,使用系統或反向命令來執行命令可以很好地工作。

+0

+1提供超快速和簡單的解決方案 – AntonioCS 2010-01-01 22:40:55