Я отсканировал пару страниц и немного отредактировал их, чтобы они выглядели аккуратно. Но поскольку я хотел их перепечатать, я заметил, что обрезал границы этих изображений, чтобы принтер не распечатывал все содержимое.
Я работаю в Linux, и у меня есть принтер Brother с драйверами для Linux, но параметр масштабирования почему-то не работает. Поэтому я решил масштабировать PDF (в который я преобразовал эти сканы), но драйвер принтера масштабирует их обратно, чтобы они соответствовали странице. (Если я отключу параметр масштабирования, он станет мусором)
Поэтому я подумал, что мог бы сделать несколько сценариев, чтобы изменить размер этих изображений с помощью пары строк и добавить некоторые отступы для принтера. Но я понятия не имею, как это сделать.
Вот моя первая попытка:
(define (resize-image filename-in filename-out )
(let* ((image (car (gimp-file-load RUN-NONINTERACTIVE filename-in "")))
(drawable (car (gimp-image-active-drawable image)))
)
(gimp-image-resize image 2728 3819 124 173)
(gimp-file-save RUN-NONINTERACTIVE image drawable filename-out "")
)
)
Это не работает. Изображение просто остается неизменным.
Моя страница A4 с разрешением 2480x3472, поэтому я решил добавить 10% к ширине, чтобы она стала 2728x3819, и установить смещение на 5%, чтобы содержимое располагалось по центру (со значениями смещения 124 и 173).
Как мне это сделать правильно? Является ли GIMP хорошим методом? Существуют ли инструменты Linux, которые могли бы сделать это лучше?
Сначала я спросил об этом на StackOverflow , и кто-то там мне помог .
Позвольте мне поделиться с вами:
Это сработало для меня:
(define (resize-image filename-in filename-out )
(let* ((image (car (gimp-file-load RUN-NONINTERACTIVE filename-in "")))
(drawable (car (gimp-image-active-drawable image)))
)
(gimp-image-resize image 2728 3819 124 173)
(let* ((layer (car (gimp-layer-new image 2728 3819 0 "Base" 100 0)))
)
(gimp-image-insert-layer image layer 0 1)
(gimp-drawable-fill layer 2)
(let* ((newlayer (car (gimp-image-flatten image)))
)
(gimp-file-save RUN-NONINTERACTIVE image newlayer filename-out "")
)
)
)
)
gimp-file-save
сохраняет слой (в исходном коде этот слой остается неизменным при изменении размера canavs с помощью gimp-image-resize
). Таким образом, приведенный выше код изменяет размер холста, добавляет слой внизу, заполняет его белым цветом и объединяет с ним исходный слой. Итак, теперь у нас есть слой с новым размером и исходным содержимым.
Билли Керр
Мартин Б.