回答
我想你的意思是如果接近圖像邊界的像素的顏色是白色的。 否則你的配方太模糊。
您可以檢查這一點,周圍的邊框的像素是白色的(你可以考慮首先做一些平滑淬火噪聲)
你可以讓我知道如何做到這一點? – thatsmeuc
你不能只是讀邊界像素,將給予圖標的誤導結果在邊界附近有一個盒子,例如當答案應該是白色時,LoveFilm徽標將返回紅色。計數最重複的顏色也會引起誤解,例如在MSDN徽標的情況下,背景是透明的(邊框),但最重複的顏色可能是深藍色(我沒有計數)。
也許藍色是背景色,而你的大腦只是不能解釋正確的圖像:)(+1) –
jpeg不能透明,即使它不是白色,也是透明的:) –
Aye,JPEGs沒有alpha信息,它們只是圖像的例子,儘管大多數人會知道(或者很容易找到)這些圖像支持了我的觀點,即一條規則可能不適合所有場景。 – joocer
你應該嘗試使用與getPixel功能,你可以在這裏找到一些文檔:
GetPixel Function
你只需要選擇的座標,以獲得一個RGB值。
然後,您可以嘗試使用盡可能多的座標,因爲您希望具有很多價值。
只要檢查你的值,以知道它是否是白色的。
嘗試這樣:
public bool IsBackgroundWhite(Bitmap theImageBitmap)
{
Bitmap bmp = new Bitmap(theImageBitmap);
int weight = 0;
for (int x=0;x<bmp.Width;x++) {
weight += GetWeight(bmp.GetPixel(x,0));
weight += GetWeight(bmp.GetPixel(x,bmp.Height-1));
}
for (int y=0;y<bmp.Height;y++) {
weight += GetWeight(bmp.GetPixel(0,y));
weight += GetWeight(bmp.GetPixel(bmp.Width-1,y));
}
if (weight > 255)
return true;
return false;
}
private int GetWeight(Color c)
{
if (c.R >= 200 && c.B >= 200 && C.G >= 200)
{
int n1 = 255 - c.R;
int n2 = 255 - c.G;
int n3 = 255 - c.B;
return (int)((n1+n2+n3)/3)
}
}
- 1. CSS:背景顏色的背景圖像
- 2. 檢查背景顏色或圖像
- 3. 更新圖像的顏色或圖像的背景顏色
- 4. JQuery SlideUp - 背景顏色背後圖像
- 5. 更改TTThumbsViewController的背景顏色/圖像
- 6. 更改Images.xcassets圖像的背景顏色?
- 7. 的UIView更改背景顏色圖像
- 8. 在圖像上的CSS顏色背景
- 9. 顯示圖像的背景顏色 - CSS
- 10. css透明圖像的背景顏色
- 11. 背景顏色覆蓋我的圖像
- 12. 背景顏色背景圖像之間的圖層文本
- 13. CSS背景圖像顏色疊加
- 14. 爲EKEventEditViewController設置背景顏色/圖像
- 15. UWP:設置背景顏色和圖像?
- 16. CSS圖像transparancy和背景顏色
- 17. 背景顏色環繞圖像
- 18. CSS背景顏色與圖像
- 19. 在電子郵件背景顏色上的背景圖像
- 20. 背景圖像和背景顏色之間的CSS過渡
- 21. 分層背景圖像下面的背景顏色?
- 22. 如何使用MATLAB檢索任意圖像的背景顏色?
- 23. 懸停改變背景圖像而不是背景顏色
- 24. 背景顏色藏漢作爲背景圖像中不工作
- 25. 將背景圖像疊加到背景顏色上
- 26. 設置背景顏色和背景圖像在CSS
- 27. div背景圖像顯示出來,但背景顏色不是
- 28. 背景圖像不透明度與父背景顏色
- 29. 通過透明背景圖像顯示背景顏色
- 30. 將背景圖像和背景顏色對添加到元素
可以讀取圖像中的每個像素,並檢查其顏色更重複......不是最好的,但可能解決您的問題 – ivowiblo
同上@ivowiblo,雖然它是可能只是爲了讀取邊緣像素。 –