14

I have an image, about 300x300 pixels large. I want to print as many copies as possible on a single page (I am planning to cut them apart with scissors afterwards).

Is there a way to do this? Is there a way to generate a PDF with copies (without opening something like gimp and manually doing copy-paste work).

5 Answers 5

12

You can use ImageMagick's montage tool.

  1. Install the imagemagic tools

    sudo apt-get install imagemagick
    
  2. Combine your images. I have created this image, called foo.png as a demonstration:

    enter image description here

    Run montage, telling it to make 3 rows of 5 images each (-tile 3x5), keeping the original size of the image (-geometry 300x400 and give it the same image 15 times as input:

    montage -geometry 300x400 -tile 3x5 foo.png foo.png foo.png foo.png foo.png foo.png foo.png foo.png \
     foo.png foo.png foo.png foo.png foo.png foo.png foo.png  montage.ps
    

    The result is:

    enter image description here

  3. Since that creates a postscript file (the language printers speak), you can print it directly from the command line using tools like lp or enscript. I don't have a printer at the moment so I can't check but this should work

    lp montage.ps
    

    or

    enscript montage.ps
    
7
  • Hey, Tried this but I think the DPI is wrong, the images come out pixelated. -density 300x300 does not seem to help. Any ideas?
    – GuySoft
    Mar 13, 2014 at 15:26
  • @GuySoft when you print them or in the image itself as well? Try using fewer images: montage foo.png foo.png foo.png foo.png foo.png foo.png -tile 2x3 montage.ps, just play around with the settings, you probably just need to get the number right so it fits on a single page. Also try Rinzwind's approach.
    – terdon
    Mar 13, 2014 at 15:34
  • Would have tried @Rinzwind but not next to a printer now. Trying to figure out how to print to file with Rinzwind's solution. Also changing the tile number does not help, I should be able to fit much more on a page. [imgur.com/rbEj6Ee](Here is my image for reference).
    – GuySoft
    Mar 16, 2014 at 8:36
  • 3
    @GuySoft use the -geometry option to set the size of each image: montage -geometry 303x453 foo.png foo.png foo.png foo.png foo.png foo.png foo.png foo.png foo.png foo.png foo.png foo.png foo.png foo.png foo.png -tile 3x montage.pdf gives me this pdf.
    – terdon
    Mar 16, 2014 at 15:54
  • '-geometry' works I can generate PDF like this. thanks!
    – GuySoft
    Mar 17, 2014 at 13:12
8

From Command-Line Printing in Linux.

N-Up Printing

The -o number-up=value option selects N-Up printing. N-Up printing places multiple document pages on a single printed page. CUPS supports 1, 2, 4, 6, 9, and 16-Up formats; the default format is 1-Up:

lp -o number-up=1 filename 
lp -o number-up=2 filename 
lp -o number-up=4 filename 
lpr -o number-up=16 filename

The -o number-up-layout=value option chooses the layout of the pages on each output page:

-o number-up-layout=btlr
Bottom to top, left to right
-o number-up-layout=btrl
Bottom to top, right to left
-o number-up-layout=lrbt
Left to right, bottom to top
-o number-up-layout=lrtb
Left to right, top to bottom (default)
-o number-up-layout=rlbt
Right to left, bottom to top
-o number-up-layout=rltb
Right to left, top to bottom
-o number-up-layout=tblr
Top to bottom, left to right
-o number-up-layout=tbrl
Top to bottom, right to left

So I assume it will be something like this:

lp -o number-up=4 number-up-layout=lrtb -d {printer} {filename} -n {copies} 

And it should print 4 images from left to right, top to bottom per page for the amount of {copies}. The numbers you can use seems fixed...


If this does not work please leave a comment.

5
  • 1
    Is there a way to set -d to print to a file, and not a printer?
    – GuySoft
    Mar 15, 2014 at 12:22
  • 1
    This was not successful for me. Using -n 4 -o number-up=4 caused four sheets to be printed, each with a 1/4 scale copy of my work. I got it to work by piping the output of pdftk like so: pdftk A=file.pdf cat A A A A output - | lp -o number-up=4 -
    – Aoeuid
    Feb 9, 2016 at 18:23
  • @GuySoft nope. But I assume you can pipe it to a file ( > file.pdf) (?)
    – Rinzwind
    Feb 9, 2016 at 18:32
  • @Aoeuid nice one :)
    – Rinzwind
    Feb 9, 2016 at 18:32
  • @GuySoft a bit late for a reply, but perhaps this might be useful to someone else... On debian/ubuntu and similar you can install the printer-driver-cups-pdf package which will create a PDF printer (there are probably similar packages for other distributions). You can then use pdftk A=file.pdf cat A A A A output - | lp -o number-up=4 -o number-up-layout=lrtb -d PDF - and you will find your new pdf file in ~/PDF. Jul 22, 2022 at 11:50
3

install gThumb (sudo apt-get install gthumb)

execute gThumb

select several image

right-click and select print

enter image description here

select image tab

increase Rows and Coulms

3
  • 1
    for screenshots better use LC_ALL=C command to start the program! Jun 2, 2016 at 6:15
  • What the heck would you use the C locale for? Since this site is mostly English, why not en-US.UTF-8? May 12, 2017 at 17:26
  • 1
    LC_ALL=C is quaranteed to work, locale en_US.utf8 may be missing on the system so asking somebody to run LC_ALL=en_US.utf8 command may end up not working. I agree that if real locale is available, it probably is a better option. Aug 8, 2017 at 18:20
3

It is possible and convenient with PhotoPrint.

Install the app in the Terminal:

sudo apt-get update
sudo apt-get install photoprint

When you open the image in the app, click it and choose from the menu Image > Duplicate Image. (also available via rightclick on the image)

Next you choose the amount of columns and/or rows you want to produce under Layout and adjust the other settings like margins and distances between the images.

You can save your settings as default under File in the menu.

2
1

I was not satisfied with the answers so I came up with my own solution to print an image sixteen times on one sheet of paper:

# Append vertically.
convert Image.png Image.png Image.png Image.png -append Image_4_1.png
# Append horizontally.
convert Image_4_1.png Image_4_1.png Image_4_1.png Image_4_1.png +append Image_4_4.png

Now you can go ahead and print Image_4_4.png. You may want to delete Image_4_1.png afterwards. Works nicely with flashcards.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.