চিত্র-মোডে সঙ্কুচিত / জুম / স্কেল চিত্রগুলি


20

ইমাসসের ডক-ভিউ-মোডের সাহায্যে আমি পিডিএফগুলি সহজেই সঙ্কুচিত / জুম / ইত্যাদি করতে পারি, তবে আমি ইমেজগুলির সাথে একই জিনিসটি করতে সক্ষম হতে চাই। বর্তমানে আমি যখন কোনও চিত্র খোলাম তখন ফ্রেমটিতে এটি ফিট করার জন্য আমি জুম স্তরটি সামঞ্জস্য করতে পারি না। আমি জানি যে সেখানে আছে image-mode-fit-frame, যখন চিত্রটি আমার পর্দার চেয়ে বড় হয় তখন এটি কোনও লাভ করে না।

এমন কোনও প্যাকেজ বা মোড আছে যা আমাকে কোনও চিত্রকে জুম বা আউট করতে দেয়?

উত্তর:


15

এই জাতীয় কার্যকারিতা প্যাকেজগুলির দ্বারা প্ররোচিত হয়:

  • image-dired-thumbnail-mode

    থাম্বনেইল বাফার পয়েন্টের সাহায্যে, আপনি এটির একটি আকারের সংস্করণ অন্য উইন্ডোতে প্রদর্শন করতে RET( image-dired-display-thumbnail-original-image) টাইপ করতে পারেন । এটি উইন্ডো ফিট করার জন্য চিত্রটির মাপ দেয়।

    এটি ইমেজম্যাগিকের convertকমান্ড ব্যবহার করে ।

    আপনি image-dired-external-viewerসমস্যা এড়াতে এবং আপনার চিত্রগুলি যেমন কোনও বাহ্যিক চিত্র দর্শনে প্রদর্শন করতে ব্যবহার করতে পারেন feh

  • eimp

    (add-hook 'image-mode-hook 'eimp-mode)
    

    এটি mogrifyপ্রকৃত রূপান্তর করতে ইমেজম্যাগিকের ইউটিলিটিটি ব্যবহার করে ।

    (kbd "+") 'eimp-increase-image-size
    (kbd "-") 'eimp-decrease-image-size
    (kbd "<") 'eimp-rotate-image-anticlockwise
    (kbd ">") 'eimp-rotate-image-clockwise
    (kbd "B +") 'eimp-blur-image
    (kbd "B -") 'eimp-sharpen-image
    (kbd "B E") 'eimp-emboss-image
    (kbd "B G") 'eimp-gaussian-blur-image
    (kbd "B R") 'eimp-radial-blur-image
    (kbd "C B +") 'eimp-increase-image-brightness
    (kbd "C B -") 'eimp-decrease-image-brightness
    (kbd "C C +") 'eimp-increase-image-contrast
    (kbd "C C -") 'eimp-decrease-image-contrast
    (kbd "F ^") 'eimp-flip-image
    (kbd "F >") 'eimp-flop-image
    (kbd "F <") 'eimp-flop-image
    (kbd "N") 'eimp-negate-image
    
    ; Commands most relevant to you:
    (kbd "S f") 'eimp-fit-image-to-window
    (kbd "S h") 'eimp-fit-image-height-to-window
    (kbd "S w") 'eimp-fit-image-width-to-window
    
    (kbd "<right>") 'eimp-roll-image-right
    (kbd "<left>") 'eimp-roll-image-left
    (kbd "<up>") 'eimp-roll-image-up
    (kbd "<down>") 'eimp-roll-image-down
    (kbd "<down-mouse-1>") 'eimp-mouse-resize-image
    (kbd "<S-down-mouse-1>") 'eimp-mouse-resize-image-preserve-aspect
    (kbd "C-c C-k") 'eimp-stop-all
    
  • eiv- এটি ইমেজম্যাগিক প্যাকেজও ব্যবহার করে যা সরবরাহ করা উচিত mogrify

    সম্পূর্ণ কমান্ড তালিকা:

    • eiv-fit-image-to-window- বর্তমান উইন্ডো আকারে চিত্রের আকার পরিবর্তন করুন।
    • eiv-rotate-current-image - বর্তমান চিত্রটি 90 ডিগ্রীতে ঘোরান।
    • eiv-dec-or-inc-image - বর্তমান উইন্ডো আকারে চিত্রের আকার পরিবর্তন করুন।
    • eiv-diaporama - গাছে একটি ডায়োপোরামা শুরু করুন।
    • eiv-viewer- emacs-image-viewer। দির এবং সাবডিরের গাছে নেভিগেট করার অনুমতি দেয়।

5
একটি লক্ষ্য করা উচিত যে eimpফাইলটি পরিবর্তন করে। এটি কেবল পঠনযোগ্য চিত্রগুলিতে কাজ করে না।
কুশল মোদী

6

সমাধান

এটি lisp/image-mode.elলেখার জন্য আমি উত্স কোডটি ব্যবহার করেছি। যে কোনও চিত্র বাফারে এই ফাংশনটি কল করা চিত্র এবং উইন্ডোর উচ্চতা / প্রস্থের অনুপাতের উপর নির্ভর করে প্রস্থ বা উচ্চতার সাথে মানানসই আকার পরিবর্তন করবে।

এই ফাংশনটি কাজ করার জন্য আপনার এই 2 টি জিনিস প্রয়োজন:

  • আপনার ইমাকগুলি চিত্রম্যাগিকের সাথে সংকলিত হওয়া দরকার
  • ডিফল্টরূপে libjpegলোডার jpgচিত্রগুলি পরিচালনা করতে ব্যবহৃত হয় । এই উত্তরের পরবর্তী অংশে প্রদর্শিত হ্যাকটি ইমার্সকে imagemagickলোডার ব্যবহার করতে বাধ্য করতে ব্যবহৃত হয় ।
(ডিফুন মোডি / চিত্র-রূপান্তর-ফিট থেকে উইন্ডো) ()
  "চিত্র এবং উইন্ডো অনুপাতের ভিত্তিতে প্রস্থ বা উচ্চতা মাপতে চিত্রটিকে পুনরায় আকার দিন।
এই ফাংশনটি চালাতে ইমেজম্যাগিকের প্রয়োজন ""
  (ইন্টারেক্টিভ)
  (আসুন * ((আইএমজি-আকার (চিত্র-প্রদর্শন-আকার (চিত্র-প্রাপ্ত-প্রদর্শন-সম্পত্তি) টি)))
          (আইএমজি-প্রস্থ (গাড়ি ইমগ-আকার))
          (img- উচ্চতা (সিডিআর img আকার))
          (আইএমজি-এইচ / ডাব্লু-অনুপাত (/ (ফ্লোট ইমগ-উচ্চতা) (ফ্লোট ইমগ-প্রস্থ))))
          (উইন-প্রস্থ (- (2 তম 2 (উইন্ডো-ভিতরে-পিক্সেল-প্রান্তগুলি)))
                        (নবম 0 (উইন্ডো-ভিতরে-পিক্সেল-প্রান্তগুলি))))
          (উইন-উচ্চতা (- (নবম 3 (উইন্ডো-ভিতরে-পিক্সেল-প্রান্তগুলি)))
                         (নবম 1 (উইন্ডো-ভিতরে-পিক্সেল-প্রান্তগুলি))))
          (উইন-এইচ / ডাব্লু-অনুপাত (/ (ফ্লোট উইন-উচ্চতা) (ভাসা উইন-প্রস্থ)))))
    ;; উইন্ডোটির h / w অনুপাতটি যদি চিত্রের h / w অনুপাত হয় তবে প্রস্থ অনুসারে চিত্রটি ফিট করুন
    (যদি (> উইন-এইচ / ডাব্লু-অনুপাত ইম্জি-এইচ / ডাব্লু-অনুপাত)
        (ছবির-রুপান্তর সুস্থ-টু-প্রস্থের)
      ;; অন্য উচ্চতা অনুসারে ফিট
      (ছবির-রুপান্তর সুস্থ-টু-উচ্চতা))))

imagemagickচিত্রগুলি লোড করার জন্য ইম্যাক্সকে বাধ্য করতে হ্যাক করুন

Emacs বাগ রিপোর্ট মাধ্যমে নিম্নলিখিত পর #18797, #10746এবং #10112, নিম্নলিখিত সমাধান লোড ইমেজ ImageMagick অত্যাচার কাজ; এটি আপনার কোথাও রাখুন 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

তথ্যসূত্র


1

image-transform-set-scaleআপনি যা খুঁজছেন তা হতে পারে। তবে এর জন্য ইমা্যাকসকে চিত্রম্যাগিক সমর্থন দিয়ে সংকলন করা দরকার।

এখানে একটা আউট মন্তব্য নেই image-transform-modeমধ্যে image-mode.elলেবেলযুক্ত "এখনো বাস্তবায়িত হয়নি।"


Does Emacs use imagemagick? yesদৌড়ানোর সময় দেখি ./configure। সুতরাং এটি চিত্রগ্রাহক দিয়ে সংকলন করেছিল। তবুও চিত্রের রূপান্তর আমার পক্ষে কাজ করে না। (Emacs উপর 24.4, x86_64-অজানা-লিনাক্স-GNU) আমিও নিম্নলিখিত আছে config.log: | #define HAVE_IMAGEMAGICK 1 | #define HAVE_MAGICKEXPORTIMAGEPIXELS 1 | #define HAVE_MAGICKMERGEIMAGELAYERS 1
কুশল মোদী

0

এখানে এমন একটি সমাধান রয়েছে যা আপনাকে পাঠ্য স্কেলিং, Cx C- = এবং Cx C- এর জন্য একই কীগুলি ব্যবহার করে স্কেল আপ এবং ডাউন করতে দেয় -

(defun scale-image ()
  "Scale the image by the same factor specified by the text scaling."
  (image-transform-set-scale
   (expt text-scale-mode-step
         text-scale-mode-amount)))

(defun scale-image-register-hook ()
  "Register the image scaling hook."
  (add-hook 'text-scale-mode-hook 'scale-image))

(add-hook 'image-mode-hook 'scale-image-register-hook)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.