我在找東西,可以生成一個雜誌封面 的圖像,我可以添加一些內容的亮點。 什麼是做這份工作的最好的圖書館? 它是PIL嗎?或imagemagick?如何使用python生成雜誌封面?
回答
我很驚訝你想用程序設計雜誌封面,而不是像Photoshop,Illustrator,Gimp或Inkscape這樣的GUI。但是,假設你這麼做,我認爲最簡單的方法是使用Python來構建一個SVG圖像。 SVG是基於矢量的(線位置可以在修改後修改)和人類可讀的XML,因此您可以在Python中自動生成圖形和在Inkscape中手動編輯它們。 Python具有良好的操作XML的工具built-in和third-party,對此,SVG只是一個特例。
以編程方式生成圖像可能會涉及到大量的反覆試驗,因此我建議您使用交互式查看器進行設置。這裏有一個簡單的使用GTK(如在Ubuntu,apt-get install python-rsvg python-cairo
):
import cairo
import rsvg
import gtk
class Viewer(object):
def __init__(self):
self.string = """<svg width="800" height="600"></svg>"""
self.svg = rsvg.Handle(data=self.string)
self.win = gtk.Window()
self.da = gtk.DrawingArea()
self.win.add(self.da)
self.da.set_size_request(800, 600)
self.da.connect("expose-event", self._expose_cairo)
self.win.connect("destroy", self._destroy)
self.win.show_all()
self.win.present()
def _expose_cairo(self, win, event):
self.svg = rsvg.Handle(data=self.string)
cr = self.da.window.cairo_create()
self.svg.render_cairo(cr)
def _destroy(self, widget, data=None):
gtk.main_quit()
def renderSVG(self, text):
x, y, w, h = self.win.allocation
self.da.window.invalidate_rect((0,0,w,h), False)
self.string = text
現在你可以用命令建立的圖形像
viewer = Viewer() # pops up a window
import lxml.etree as etree
from lxml.builder import E as svg
rectangle = svg.rect(x="10", y="10", width="80", height="80", style="fill: yellow; stroke: black; stroke-width: 2;")
circle = svg.circle(cx="70", cy="70", r="30", style="fill: red; fill-opacity: 0.5; stroke: black; stroke-width: 2;")
document = svg.svg(rectangle, circle, width="100", height="100")
viewer.renderSVG(etree.tostring(document)) # draws the image in the window
,並將它們保存與
open("outputFile.svg", "w").write(etree.tostring(document))
位圖PNG通過使用Base64對其進行編碼,可以將圖像編碼爲href:data
屬性,從而將圖像嵌入到SVG中。這需要長時間的解釋,但我只是讓你知道這是可能的。此外,SVG支持您期望在閃亮雜誌封面上的所有光滑漸變和混合效果,但您必須深入研究文檔以瞭解其工作方式。
+1。這是需要對SO進行更多支持的那種深思熟慮的答案。 – iruvar
非常感謝您提供這樣一個全面的答案,這正是我正在尋找的。 – flyingfoxlee
- 1. 如何使用python保存使用硒生成的日誌
- 2. 如何使用asciidoctor-fopub生成封面圖片圖片
- 3. 如何使用NReco pdf生成器設置封面?
- 4. EPUB文件生成,封面
- 5. Z80標誌 - 如何生成?
- 6. 設置封面:生成測試實例
- 7. 如何使用python和xcode 4.2中的界面生成器?
- 8. 如何使用python生成PWM碼
- 9. 如何使用Python生成gpx文件?
- 10. 如何使用python生成器
- 11. 使用日誌封裝器
- 12. 春-WS:如何使用WebserviceTemplate與預先生成的SOAP信封
- 13. 如何使用SWIG生成C++ API的C封裝?
- 14. 如何使用BouncyCastle的lightwigth API生成CMS封裝數據
- 15. 如何生成空的封閉元素使用XMLGenerator?
- 16. 生成密封類
- 17. python中的複雜生成器
- 18. 如何使用FPDF生成生成PDF的頁面上預覽
- 19. 如何使用python 3添加專輯封面到mp3文件?
- 20. 如何使用python讀取專輯封面?
- 21. laravel查詢生成器的封裝複雜的地方
- 22. Python資源,社區,雜誌
- 23. 使用python進行復雜平面的區域集成dblquad
- 24. 如何使用名稱生成日誌,如log- {ClassThatInvokesLogger} - {Data}?
- 25. 如何用生鏽的宏生成複雜的枚舉變體
- 26. 如何在python 3(icq auth)中生成hmac標誌?
- 27. iPad「雜誌」如何運作?
- 28. 報亭雜誌如何
- 29. 使用python生成PDF
- 30. 使用python生成分形
請定義「雜誌封面」。 – 2013-05-31 13:31:50
請爲此定義「生成」... –
如果您只是想將某些文本疊加到圖像上,那麼PIL就可以工作。我對ImageMagick瞭解不多。對於更復雜的情況,您最好使用適當的DTP軟件包。 – Aya