이미지로 잡지 표지를 생성 할 수있는 콘텐츠를 찾고 있는데 일부 콘텐츠 하이라이트를 추가 할 수 있습니다. 이 작업을 수행하는 데 가장 적합한 라이브러리는 무엇입니까? PIL입니까? 또는 imagemagick?python을 사용하여 잡지 표지를 만드는 방법은 무엇입니까?
답변
Photoshop, Illustrator, Gimp 또는 Inkscape와 같은 GUI 대신 프로그래밍 방식으로 잡지 표지를 디자인하고 싶습니다. 그러나 여러분이 가정한다면, 가장 쉬운 방법은 파이썬을 사용하여 SVG 이미지를 만드는 것입니다. SVG은 벡터 기반이며 (행 위치는 수정 된 후에 수정할 수 있음) 사람이 읽을 수있는 XML이므로 파이썬에서 그래픽을 자동 생성하고이를 Inkscape에서 직접 편집 할 수 있습니다. Python은 XML 조작을위한 built-in과 third-party 도구를 가지고 있습니다. SVG는 특별한 경우입니다.
프로그래밍 방식으로 이미지를 생성하면 많은 시행 착오가 발생할 수 있으므로 대화식 뷰어로 직접 설정하는 것이 좋습니다.
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로 저장할 수 있습니다 : 다음은 간단한 GTK (예를 들어 우분투, apt-get install python-rsvg python-cairo
)를 사용하여 하나의 이미지는 Base64로 인코딩하여 href:data
속성으로 인코딩하여 SVG에 임베드 할 수 있습니다. 그건 긴 설명이 필요 하겠지만, 가능하다는 것을 알려주고 있습니다. 또한 SVG는 반짝이는 잡지 표지에서 기대할 수있는 모든 광택 그라디언트와 블렌딩 효과를 지원하지만, 어떻게 완료되었는지 문서를 파헤쳐 야합니다.
+1. 이것은 SO에 대한 더 많은 지원이 필요한 사려 깊은 대답입니다. – iruvar
그런 포괄적 인 답변을 주셔서 감사합니다. 정확히 제가 찾고있는 것입니다. – flyingfoxlee
- 1. Python을 사용하여 RESTful API를 만드는 방법은 무엇입니까?
- 2. RightFax API에서 컬렉션의 표지를 지정하는 방법은 무엇입니까?
- 3. JTabbedPane을 Ctrl + Tab 키 바인딩을 잡지 못하게 만드는 방법은 무엇입니까?
- 4. Python을 사용하여 VMS 데몬을 작성하는 방법은 무엇입니까?
- 5. Google 도서 API를 사용하여 ISBN에서 도서 표지를 얻는 방법은 무엇입니까?
- 6. Python을 사용하여 Ubuntu에서 파일 바로 가기를 만드는 방법은 무엇입니까?
- 7. azure에서 python을 사용하여 documentdb 계정을 만드는 방법은 무엇입니까?
- 8. 원격 시스템에서 Python을 사용하여 VMware에서 디스크를 만드는 방법은 무엇입니까?
- 9. python을 사용하여 안드로이드에 음성 명령 프로그램을 만드는 방법은 무엇입니까?
- 10. python을 사용하여 Ctrl + A를 보내는 방법은 무엇입니까?
- 11. Python을 사용하여 Linux에서 사용자를 만드는 방법
- 12. iOS 사진에서 맞춤 앨범의 표지를 설정하는 방법은 무엇입니까?
- 13. 킨들을위한 잡지 만들기
- 14. python을 사용하여 artifactory에 파일을 저장하는 방법은 무엇입니까?
- 15. Python을 사용하여 HTML에서 추출하는 방법은 무엇입니까?
- 16. Python을 사용하여 XML 파일을 수정하는 방법은 무엇입니까?
- 17. Python을 사용하여 블루투스 스트림을 모니터링하는 방법은 무엇입니까?
- 18. Python을 사용하여 단축키를 실행하는 방법은 무엇입니까?
- 19. python을 사용하여 HTML에서 버튼을 트리거하는 방법은 무엇입니까?
- 20. python을 사용하여 이미지에서 객체를 계산하는 방법은 무엇입니까?
- 21. python을 사용하여 이력서를 경험할 수있는 방법은 무엇입니까?
- 22. Python을 사용하여 HTML을 MHTML로 변환하는 방법은 무엇입니까?
- 23. python을 사용하여 데스크탑에서 이벤트를 호출하는 방법은 무엇입니까?
- 24. Python을 사용하여 파일에서 IP를 검색하는 방법은 무엇입니까?
- 25. Python을 사용하여 Millisecond를 제거하는 방법은 무엇입니까?
- 26. Flask에서 python을 사용하여 javascript를 작동시키는 방법은 무엇입니까?
- 27. Python을 사용하여 시스템 유형을 찾는 방법은 무엇입니까?
- 28. python을 사용하여 gtalk에 메시지를 보내는 방법은 무엇입니까?
- 29. Iron python을 사용하여 DLL을로드하는 방법은 무엇입니까?
- 30. python을 사용하여 mandelbrot을 올바르게 설정하는 방법은 무엇입니까?
"잡지 표지"를 정의하십시오. –
그 문제에 대해 "생성"을 정의하십시오 ... –
일부 텍스트를 이미지 위에 겹치기 만하면 PIL이 작동합니다. 나는 ImageMagick에 대해 많이 모른다. 더 복잡한 경우에는 적절한 DTP 패키지를 사용하는 것이 좋습니다. – Aya