Отображение изображений
Вы можете использовать дескриптор изображения, самостоятельно задав свойство display, но проще воспользоваться функциями из этого раздела.
- Функция: insert-image image &optional string area slice inhibit-isearch
-
Эта функция вставляет image в текущий буфер в точке. Значение image должно быть дескриптором изображения; это может быть значение, возвращённое функцией
create-image, или значение символа, определённого с помощьюdefimage. Аргумент string задаёт текст, который будет помещён в буфер для отображения изображения. Если он опущен или равенnil, функцияinsert-imageпо умолчанию использует" ".Аргумент area задаёт, следует ли поместить изображение на поле. Если он равен
left-margin, изображение появляется на левом поле;right-marginзадаёт правое поле. Если area равенnilили опущен, изображение отображается в точке внутри текста буфера.Аргумент slice задаёт фрагмент изображения для вставки. Если slice равен
nilили опущен, вставляется всё изображение. (Однако обратите внимание: при отображении изображения обрезаются по правому краю окна, поскольку перенос изображений не поддерживается.) В противном случае slice — это список(x y width height), задающий позиции x и y, а также width и height области изображения для вставки. Целочисленные значения задаются в пикселях. Число с плавающей точкой в диапазоне 0.0–1.0 обозначает соответствующую долю ширины или высоты всего изображения.Внутри эта функция вставляет string в буфер и задаёт ему свойство
display, указывающее на image. См. Свойствоdisplay. По умолчанию при интерактивном поиске в буфере учитывается string. Если inhibit-isearch не равенnil, это поведение отключается.
- Функция: insert-sliced-image image &optional string area rows cols
-
Эта функция вставляет image в текущий буфер в точке, как
insert-image, но разбивает изображение на rowsxcols фрагментов одинакового размера.Emacs отображает каждый фрагмент как отдельное изображение и позволяет прокручивать содержимое вверх и вниз более удобным образом, вместо того чтобы перескакивать через всё изображение при перелистывании буфера с отображаемыми (большими) изображениями.
- Функция: put-image image pos &optional string area
-
Эта функция помещает изображение image перед позицией pos в текущем буфере. Аргумент pos должен быть целым числом или маркером. Он задаёт позицию в буфере, в которой должно появиться изображение. Аргумент string задаёт текст, который будет служить заполнителем для изображения вместо символа ‘x’ по умолчанию.
Аргумент image должен быть дескриптором изображения, возможно, возвращённым функцией
create-imageили сохранённым с помощьюdefimage.Аргумент area задаёт, следует ли поместить изображение на поле. Если он равен
left-margin, изображение появляется на левом поле;right-marginзадаёт правое поле. Если area равенnilили опущен, изображение отображается в точке внутри текста буфера.Внутри эта функция создаёт наложение и задаёт ему свойство
before-string, содержащее текст со свойствомdisplay, значением которого является изображение. (Уф! Вот это формулировка…) При успешном выполнении функция возвращает созданное наложение, а также задаёт его свойствуput-imageзначениеt.
- Функция: remove-images start end &optional buffer
-
Эта функция удаляет изображения из buffer между позициями start и end. Если buffer опущен или равен
nil, изображения удаляются из текущего буфера.Удаляются только изображения, помещённые в buffer способом, используемым функцией
put-image, но не изображения, вставленные с помощьюinsert-imageили другими способами.
- Функция: image-size spec &optional pixels frame
-
Эта функция возвращает размер изображения в виде пары
(width . height). spec — это спецификация изображения. Если pixels не равенnil, размеры возвращаются в пикселях; в противном случае они возвращаются в единицах размера символа по умолчанию для frame (см. Шрифт кадра). frame — это кадр, в котором будет отображаться изображение. Если frame равенnilили опущен, используется выбранный кадр (см. Фокус ввода).
- Переменная: max-image-size
-
Эта переменная задаёт максимальный размер изображения, которое Emacs будет загружать. Emacs откажется загружать (и отображать) любое изображение, размер которого превышает этот предел.
Если значение является целым числом, оно напрямую задаёт максимальную высоту и ширину изображения в пикселях. Если значение является числом с плавающей точкой, оно задаёт максимальную высоту и ширину изображения как долю высоты и ширины кадра. Если значение не является числом, явного ограничения размера изображений нет.
Эта переменная предназначена для предотвращения случайной загрузки в Emacs изображений чрезмерно большого размера. Она учитывается только при первой загрузке изображения. После помещения изображения в кэш изображений его можно отображать в любом случае, даже если значение
max-image-sizeвпоследствии изменилось (см. Кэш изображений).
- Функция: image-at-point-p
Эта функция возвращает
t, если точка находится на изображении, иnilв противном случае.
Изображения, вставленные описанными выше функциями, также получают локальную карту клавиш, установленную в текстовых свойствах (или наложениях), охватывающих отображаемое изображение. Эта карта клавиш задаёт следующие команды:
- i +
-
Увеличить размер изображения (
image-increase-size) - i -
-
Уменьшить размер изображения (
image-decrease-size). - i r
-
Повернуть изображение (
image-rotate). - i h
-
Отразить изображение по горизонтали (
image-flip-horizontally). - i v
-
Отразить изображение по вертикали (
image-flip-vertically). - i o
-
Сохранить изображение в файл (
image-save). - i c
-
Обрезать изображение в интерактивном режиме (
image-crop). - i x
Вырезать прямоугольную область изображения в интерактивном режиме (
image-cut).
Подробнее об этих привязках клавиш для работы с изображениями см. в разделе Режим изображений в Руководстве GNU Emacs.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Showing-Images.html