2010-08-30 67 views
3

我是Python新手,請耐心等待。
基本上我的腳本應該運行這樣的:使用Python/PIL閱讀SVG文件

1)裝載圖像並將其分割成R,G,B信道
2)標記的與保存爲SVG文件和
現有路徑該圖像的區域3)用該區域的R,G,B值進行一些計算。
(再發送中的圖像到文件夾A或B,這取決於計算的結果)

我已經做了1)和3份),但我現在的問題是加載SVG文件和應用它在我的形象上。
圖像是用魚眼鏡頭拍攝的照片。我只想獲取實際照片的RGB值 - 而不是黑色背景。我通過用GIMP繪製所需的路徑(不是一個圓圈)創建了svg文件。

我的問題是:
如何使用python加載現有的svg文件(並將其作爲路徑讀取)並將路徑應用到圖像上?

我確定有一個簡單的方法來做到這一點,但我還沒有找到它。

任何提示和推薦將不勝感激!


編輯:

SVG文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" 
      `"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> 

<svg xmlns="http://www.w3.org/2000/svg" 
    width="22.2222in" height="16.6667in" 
    viewBox="0 0 1600 1200"> 
    <path id="Auswahl" 
     fill="none" stroke="black" stroke-width="1" 
     d="M 848.00,103.21 
      C 848.00,103.21 861.00,103.96 861.00,103.96 
      891.77,105.30 921.91,109.93 952.00,116.58 
      988.30,124.59 1023.25,137.24 1057.00,152.69 
      1210.78,223.11 1322.55,368.09 1353.61,534.00 
      1358.02,557.54 1361.00,581.11 1362.04,605.00 
      1362.04,605.00 1363.00,616.00 1363.00,616.00 
      1363.00,616.00 1363.00,649.00 1363.00,649.00 
      1363.00,649.00 1362.04,662.00 1362.04,662.00 
      1360.12,705.99 1352.05,749.92 1338.98,792.00 
      1289.63,950.77 1167.62,1077.58 1011.00,1133.31 
      962.90,1150.42 911.98,1160.82 861.00,1163.04 
      861.00,1163.04 848.00,1164.00 848.00,1164.00 
      848.00,1164.00 815.00,1164.00 815.00,1164.00 
      815.00,1164.00 804.00,1163.04 804.00,1163.04 
      756.47,1160.97 709.15,1151.72 664.00,1136.67 
      608.47,1118.16 556.55,1090.63 510.00,1055.12 
      469.68,1024.36 434.97,988.81 404.88,948.00 
      288.05,789.50 269.64,577.90 355.26,401.00 
      418.58,270.18 535.32,170.13 674.00,127.02 
      700.27,118.86 729.73,111.96 757.00,108.28 
      757.00,108.28 795.00,104.17 795.00,104.17 
      795.00,104.17 809.00,103.21 809.00,103.21 
      809.00,103.21 848.00,103.21 848.00,103.21 Z" /> 
</svg> 

和鏈接到圖片: http://img153.imageshack.us/img153/5330/skybig.jpg

+0

如果您可以共享一個示例圖像和一個svg文件,這將更容易理解你打算做什麼。你在第三步做什麼樣的計算? – Offe 2010-08-30 12:23:49

+0

一個小小的更新:我還沒有找到一種方法來處理PIL,但使用GIMP – seb 2010-10-27 07:41:12

+0

@seb如果您發現了使用GIMP的方法,那就這樣吧。您可以使用Python與GIMP進行交互,以便解決問題(爲什麼您要堅持使用不能解決問題的工具?)。 – mmgp 2013-01-14 01:57:48

回答

3

你必須SVG文件柵格化的位圖,然後你可以使用PIL將其疊加到原始圖像上,因爲它不支持矢量圖像。

我前段時間做了一些研究,我發現在python下支持這個的唯一庫是cairo(也許在過去的幾個月裏,關於SVG柵格化工具的風景發生了變化)。

周圍的其他方法(我不認爲這符合您的要求)是應用原來的位圖圖像作爲背景的SVG之一,但是這聽起來令人毛骨悚然SOOOO ... ;-)

+0

你會如何將原始圖像作爲位圖應用於svg? – agconti 2014-04-24 21:19:39