Füllen Sie mehrere Bilder auf

Ich habe ein paar Seiten gescannt und sie ein wenig bearbeitet, damit sie ordentlich aussehen. Aber als ich sie erneut drucken wollte, bemerkte ich, dass ich den Rand dieser Bilder abgeschnitten hatte, damit der Drucker nicht den gesamten Inhalt druckt.

Ich verwende Linux und habe einen Brother-Drucker mit Linux-Treibern, aber irgendwie funktioniert die Skalierungsoption nicht. Also dachte ich, das PDF (in das ich diese Scans konvertiert habe) zu skalieren, aber der Druckertreiber skaliert sie zurück, um auf die Seite zu passen. (Wenn ich die Scale-to-Fit-Option deaktiviere, wird es Müll)

Also dachte ich, ich könnte ein bisschen Skript-Fu machen, um die Größe dieser Bilder mit ein paar Zeilen zu ändern und etwas Polsterung für den Drucker hinzuzufügen. Aber ich habe keine Ahnung, wie man das macht.

Hier mein erster Versuch:

(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 "")
  )
)

Das funktioniert nicht. Das Bild bleibt einfach unverändert.

Meine Seite ist A4 mit 2480 x 3472, also dachte ich, 10 % zur Breite hinzuzufügen, damit sie 2728 x 3819 wird, und den Versatz auf 5 % einzustellen, damit der Inhalt zentriert ist (mit Versatzwerten 124 und 173).

Wie mache ich das richtig? Ist GIMP eine gute Methode? Gibt es Linux-Tools, die das besser machen könnten?

Sind Sie sicher, dass das Problem beim Druckertreiber liegt oder liegt das Problem beim Druckdialog in GIMP? Müssen Sie wirklich GIMP verwenden, um das Dokument zu drucken? Haben Sie versucht, das Bild in ein Textverarbeitungsdokument wie in LibreOffice einzufügen?
Ich habe das Bild in ein PDF konvertiert und das PDF mit dem pdfviewer gedruckt ...

Antworten (1)

Ich habe das ursprünglich bei StackOverflow gefragt und dort hat mir jemand geholfen .
Lassen Sie mich mit Ihnen teilen:

Das hat bei mir funktioniert:

(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 "")
      )
    )
  )
)
Um zu erklären, warum der Code funktioniert: gimp-file-savespeichert eine Ebene (im ursprünglichen Code bleibt diese Ebene unverändert, wenn die Größe der Canavs durch die geändert wird gimp-image-resize). Der obige Code ändert also die Größe der Leinwand, fügt unten eine Ebene hinzu, füllt sie mit Weiß und fügt die ursprüngliche Ebene darauf zusammen. Jetzt haben wir also eine Ebene, die die neue Größe und den ursprünglichen Inhalt hat.
Martin, vielleicht könntest du dann deine eigene Antwort akzeptieren? Wenn du noch da bist?
Ja entschuldigung. Man kann die eigene Antwort nicht sofort akzeptieren, also habe ich die Frage vergessen ...