2012-10-15 54 views
2

我編寫了一個PIL的簡單實現,用於將EPS文件列表轉換爲PNG文件。在Python中將EPS文件轉換爲PNG時更改輸出分辨率Imaging Library

import Image 
for infile in sys.argv[1:]: 
    f, e = os.path.splitext(infile) 
    outfile = f+".png" 
    try: 
     im = Image.open(infile) 
     im.save(outfile, dpi = (1000, 1000)) 
    except IOError: 
     print "Error" 

儘管dpi標誌改變了PNG的文件分辨率,但它不會增加im對象的分辨率。這意味着我的輸出PNG圖像質量非常低。有沒有辦法增加im對象的分辨率?此代碼不起作用。

im = Image.open(infile, dpi = (1000, 1000)) 

想法?

# Build ghostscript command 
command = ["gs", 
      "-q",     # quite mode 
      "-g%dx%d" % size,  # set output geometry (pixels) 
      "-dNOPAUSE -dSAFER",  # don't pause between pages, safe mode 
      "-sDEVICE=ppmraw",  # ppm driver 
      "-sOutputFile=%s" % file,# output file 
      "- >/dev/null 2>/dev/null"] 

大小選項只改變數字大小,但不會重新調整:

+0

您需要將分辨率更改爲「open」進程的一部分。不幸的是我不知道該怎麼做。 –

+0

我認爲你是對的。我會繼續挖掘。 – bsf10

回答

3

看着/usr/lib64/python2.7/site-packages/PIL/EpsImagePlugin.py這是通過調用的ghostscript實施它。 也許這裏給PIL開發者一個bug報告會很有用。

至於解決辦法,並提供你安裝了ImageMagick的命令行工具,你可以使用它作爲解決方法:

import os 
cmd = 'convert test.ps test.png' 
os.system(cmd) 

這是我的系統上工作得很好,沒有鬆動的質量。

這個版本給您獲得解決更多的控制:

import os 
cmd = "convert -density 300 test.ps test.png" 
os.system(cmd) 
+0

很棒的工作,非常感謝您的解決方法。我會看看PIL對此有何評論。 – bsf10

1

另一個解決辦法是使幾何形狀或文字在PS/EPS非常大。對於我的應用程序,我在EPS中渲染膠乳並轉換爲PNG。我只是將字體大小設置爲更大的數字(200磅),並且PNG質量是完美的。如果您正在生成EPS內容,這將適用於您。

相關問題