समाधान
मैंने lisp/image-mode.el
इसे लिखने के लिए सोर्स कोड का उपयोग किया । इस फ़ंक्शन को किसी भी छवि बफर में कॉल करने से यह आकार और चौड़ाई के अनुसार फिट होने के लिए आकार और विंडो की ऊंचाई / चौड़ाई अनुपात पर निर्भर करेगा।
इस कार्य के लिए आपको इन 2 चीजों की आवश्यकता है:
- आपके Emacs को Imagemagick के साथ संकलित करने की आवश्यकता है ।
- डिफ़ॉल्ट रूप से
libjpeg
लोडर का उपयोग jpg
छवियों को संभालने के लिए किया जाता है । इस उत्तर के अगले भाग में दिखाई गई हैक का उपयोग imagemagick
लोडर का उपयोग करने के लिए emacs को बाध्य करने के लिए किया जाता है ।
(डिफ्यूड मोडी / इमेज-ट्रांसफॉर्म-फिट-टू-विंडो)
"छवि और विंडो अनुपात के आधार पर चौड़ाई या ऊंचाई को फिट करने के लिए छवि का आकार बदलें।
इस फंक्शन को चलाने के लिए इमेजमाजिक की आवश्यकता है। "
(सहभागी)
(let * ((img-size (image-display-size-image-get-display-property) t))
(img- चौड़ाई) (कार img- आकार)
(img-height (cdr img-size))
(img-h / w-ratio (/ फ्लोट img-height) (फ्लोट img-width))
(जीत-चौड़ाई - (nth 2 (विंडो-इन-पिक्सेल-एज))
(nth 0 (विंडो-इन-पिक्सेल-किनारे))))
(जीत-ऊंचाई - (nth 3 (विंडो-इन-पिक्सेल-एज))
(nth 1 (विंडो-इन-पिक्सेल-किनारे)))
(जीत-एच / डब्ल्यू-अनुपात (/ फ्लोट जीत-ऊंचाई) (फ्लोट जीत-चौड़ाई)))
;; चौड़ाई का फ़िट चित्र यदि विंडो का h / w अनुपात छवि का h / w अनुपात है तो
(अगर (> विन-एच / डब्ल्यू-अनुपात img-h / w-ratio)
(छवि-बदलने फिट करने के लिए चौड़ाई)
;; ऊंचाई से फिट होना
(छवि-बदलने फिट करने के लिए ऊंचाई))))
imagemagick
छवियों को लोड करने के लिए उपयोग करने के लिए emacs को बाध्य करने के लिए हैक
इमैक बग रिपोर्ट के माध्यम से अनुसरण करने के बाद #18797
, #10746
और #10112
, निम्न समाधान ने इमेजमैगिक को छवियों को लोड करने के लिए मजबूर करने के लिए काम किया; इसे अपने में कहीं रखो init.el
:
मैं उपयोग करने के लिए मजबूर कर दिया है Emacs imagemagick
केवल छवि के लिए मुझे परिचित फ़ाइलें: png
, tiff
, jpg/jpeg
और svg
; बाकी को डिफ़ॉल्ट के रूप में रखा गया है। मैंने gif
डिफॉल्ट लोडर द्वारा फाइलों को खोलने की अनुमति देने के लिए चुना है क्योंकि एमएसीएस 24.4 ने मल्टी-फ्रेम छवियों को देखने के लिए समर्थन में सुधार किया है। पूरे regexp से लिया गया है lisp/image.el
।
(setq image-type-header-regexps
`(
("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm)
("\\`P[1-6]\\\(?:\
\\(?:\\(?:#[^\r\n]*[\r\n]\\)?[[:space:]]\\)+\
\\(?:\\(?:#[^\r\n]*[\r\n]\\)?[0-9]\\)+\
\\)\\{2\\}" . pbm)
("\\`GIF8[79]a" . gif)
;; ("\\`\x89PNG\r\n\x1a\n" . png) ;; Uncomment this (and comment the below line) to enable inline png images in org-mode
("\\`\x89PNG\r\n\x1a\n" . imagemagick) ; png
("\\`[\t\n\r ]*#define \\([a-z0-9_]+\\)_width [0-9]+\n\
#define \\1_height [0-9]+\n\\(\
#define \\1_x_hot [0-9]+\n\
#define \\1_y_hot [0-9]+\n\\)?\
static \\(unsigned \\)?char \\1_bits" . xbm)
;; ("\\`\\(?:MM\0\\*\\|II\\*\0\\)" . tiff)
("\\`\\(?:MM\0\\*\\|II\\*\0\\)" . imagemagick) ; tiff
("\\`[\t\n\r ]*%!PS" . postscript)
;; ("\\`\xff\xd8" . jpeg) ;; Uncomment this (and comment the below line) to enable inline jpg images in org-mode
("\\`\xff\xd8" . imagemagick) ; jpeg
("\\`\377\330" . imagemagick) ; jpeg
(,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)")
(comment-re (concat "\\(?:!--" incomment-re "*-->[ \t\r\n]*<\\)")))
(concat "\\(?:<\\?xml[ \t\r\n]+[^>]*>\\)?[ \t\r\n]*<"
comment-re "*"
"\\(?:!DOCTYPE[ \t\r\n]+[^>]*>[ \t\r\n]*<[ \t\r\n]*" comment-re "*\\)?"
"[Ss][Vv][Gg]"))
;; . svg) ;; Uncomment this (and comment the below line) to enable inline svg images in org-mode
. imagemagick) ; svg
))
कमी
- द्वारा लोड की जाने वाली छवि प्रकार को
imagemagick
इनलाइन छवियों के रूप में नहीं दिखाया जाएगा org-mode
।
संदर्भ
eimp
फ़ाइल को संशोधित करता है। यह केवल पढ़ने के लिए छवियों पर काम नहीं करता है।