2010-07-23 27 views
1

我有一個項目使用維基百科灰色地圖的各種成員:http://en.wikipedia.org/wiki/Wikipedia:Blank_maps。我用顏色填充它們,具體取決於用戶通過單擊形狀或通過選中複選框來選擇哪個國家,州或省。如何從維基百科自動創建灰度圖的ImageMaps?

我想編寫一個腳本,通過某種方式獲取每個國家,州或省的邊界的X和Y像素位置(儘管這些實體的名稱沒有這些實體的名稱),從而自動創建映像圖我將在稍後填寫。我已經手動完成了世界地圖,並找到了一個開源的美國地圖圖像地圖演示。我現在想更快地創建我的地圖。

我使用PHP和GD填充形狀,所以我想我可以使用形狀的一箇中心像素位置。有什麼建議麼?這個腳本是可能的,但仍然有點手動:http://abhinavsingh.com/blog/2009/03/using-image-maps-in-javascript-a-demo-application/。也Mapedit,http://www.boutell.com/mapedit/,有一個魔術棒功能,工作得很好,但我有一種感覺,這可以自動完成。

+0

我懷疑你的意思是灰色的地圖? – 2010-07-23 17:52:19

回答

0

我看到我可以使用GD PHP的imagecolorat並遍歷所有像素來找到那些黑色的。這工作:

<?php 
$im = ImageCreateFromPNG("india.png"); 
$width = imagesx($im); 
$height = imagesy($im); 
for ($cy=0;$cy<$height;$cy++) { 
    echo '<p>'; 
    for ($cx=0;$cx<$width;$cx++) { 
    $rgb = ImageColorAt($im, $cx, $cy); 
    $col = imagecolorsforindex($im, $rgb); 
if ($col["red"] == 0 && $col["green"] == 0 && $col["blue"] ==0){ 
    echo $cx.", ".$cy." "; 
    } else {echo "";} 
} 
} 
?> 

可有人建議如何找到在巨大的多面複雜,從上說,印度,所有的邊框是黑色的,一個黑白二色圖運行上面的代碼產生的多邊形國家和印度洋的內部是白色的?

這裏是印度的形象:http://wherehaveibeen.info/images/india.png現在對於需要被分成單獨的多邊形圖像映射座標的混亂:http://wherehaveibeen.info/images/black.php

1

一個近乎完美的解決這個問題是使用SVG圖像和本將svg代碼翻譯成imagmap區域標籤:http://www.electricfairground.com/polygonator/。結果是一個合適的圖像映射,儘管svg圖像可能需要調整大小,而這些國家或省份似乎都有所偏移,偶爾也會混亂起來。所以這需要在wysiwig編輯器中打開一個由SVG圖像或導出的SVG文件的PNG副本生成的頁面,該編輯器允許您移動圖像元素。

我想弄清楚偏移的模式是什麼,如果我這樣做,我會在這裏發佈它:http://wherehaveibeen.info/images/polye.html。 「Polygonator」的作者將我引入他的服務中,並使用他的文章中的svg地圖圖像:http://www.electricfairground.com/2009/08/08/image-map-rollover-effects-using-jquerys-maphilight-plugin/。他主張在那裏,通過Inkscape將png圖像追蹤到svg圖像。但是由於維基百科已經有SVG格式的地圖,爲什麼不直接進入代碼呢?事實證明,svg文件基本上已經分開了多邊形並指定了邊界區域,至少在維基百科灰色地圖http://en.wikipedia.org/wiki/Wikipedia:Blank_maps中,他們只需要使用Polygonator進行一些清理。

我發現,如果我打開記事本++中的SVG代碼,我可以複製和粘貼SVG文件的全部內容,並且該多邊形將刪除不需要的代碼。之後需要稍微清理一下imagemap區域標籤,但不多。最大的問題是前面提到的生成區域標記區域的問題,並且偶爾會混淆生成的代碼中映像區域的重疊位置。

1

那麼真正的答案在這裏似乎是SV​​G文件已經幾乎是imagemaps,可以適度處理,以將它們變成imagemaps,維基百科確實有大量的SVG地圖。

至少有三個項目試圖做到這一點,目前只取得一些成功。我現在的一種更熱衷於製造一個SVG文件處理網上圖像映射服務,因此可能會在該項目中,而不是僅僅在地圖着色工作之一: