Failed attempt at 2D printing a bookcase
Yes, you read that right, 2D printing. Not 3D printing. Let me explain my problem...
Our bookshelves are bare. A few years ago we made the switch to eBooks - we got rid of all our paper books. We've switched to downloading our games, so no gorgeous box art for us. All our DVD discs are in the loft, and their movie-poster allure is hidden away.
When friends walk into our house, they have no idea how cultured we are!
I want to print out a bookshelf. This is a walk-through of the process I took. And, more importantly, why it failed.
Inspiration
In a very fancy lawyers' offices, I saw this amazing bookshelf:
Look closer...
Gorgeous! I don't have the time nor talent to hand-paint book covers. But I have the Internet and a smattering of coding skillz.
Ideally, I'd like a gigantic colour eInk display - but that technology is years away. So, printing it is!
And it would be nice to have something as impressive as this:
Objective
- Get high-resolution cover art for meaningful books, games, and DVDs.
- Design a virtual bookshelf.
- Print onto a suitable material for wall hanging.
- Sell targetted advertising space based on personal infor... wait... no... just admire it.
Getting Media
Most of eBooks have a fairly high resolution cover embedded in them. Using the Calibre eBook Library it was pretty easy to either extract the covers or download higher resolution ones. We also used the Open Library Covers API for any stragglers.
Computer games are legitimate cultural works and some of the box art is beautiful. There are a number of places to get covers, including The Cover Project, EmuMovies, VG Box Art, and Moby Games.
Sizing Media
Books are all different physical sizes. So are their covers. In order to create a visually pleasing effect, we resized all the covers to the same width. Which means the top of the row of books looks something like this:
First, convert all the lossy JPGs to lossless PNG:
mogrify -format png *.jpeg
Then, resize them all to a maximum of 800px wide, keeping the same aspect ratio:
convert '*.png' -resize '800>' converted_%04d.png
Stitching the media
Imagemagick lets you take several images and stick them all in a row - without gaps.
montage *.png -tile 6x1 -gravity South -geometry +0+0 -background none montage.png
That creates a montage, 6 books wide, with the images aligned along the bottom, with no padding, and a transparent background.
Note - the first book has to be the tallest, otherwise the "South" gravity does weird things.
convert -background white -gravity south [abc].png +smush 10 result.png
Designing the background
OK, so we have lovely art - but what sort of shelves will the rest on? A boring Billy bookcase? Old oak timbers? Shabby chic?
I found some lovely high resolution, and freely licensed wood textures at WildTextures.com. Sticking that behind the books was rather pleasing:
With a bit of faffing around in GiMP, I created this bookshelf test:
Effects
I loved the oil painting effect on the artwork, and wondered if I could recreate it with GiMP. It offers some powerful filters. I made some "artistic" endeavours...
But, ultimately, none of them looked quite right. The covers had large swathes of plain colours - and none of them were distinctive enough to recognise when heavily distorted.
I found a site which would generate 3D book covers:
These looked OK, but it made the books a uniform size, and took up extra horizontal space. It also means I'd need to create a 3D effect for the bookshelf. And I couldn't find a good way to create a good 3D effect for game box-art. Although BoxShot.com is pretty nifty!
I also tried to use Fred's ImageMagick scripts to make a 3D cover, angled at 25 degrees and with a transparent background.
./3Dcover -s 192 -a -25 -b none cover.png cover3d.png
But, again, it didn't look great.
Time To Stop
I'd considered running off a single small test print - just to make sure things looked OK. But... I just couldn't get anything which looked nice enough to hang on our walls.
I've been noodling on this since the start of lockdown and I think it is time to call it a day.
I have loads of book covers and video game covers. So if you know of a beautiful way to display them - please let me know!
Sumana Harihareswara says:
Hey, I have an idea about why it doesn't quite look right: the textures are too similar and they all reflect light the same amount and in the same direction.
On a paper bookshelf, and in the law office you mentioned, there's DIFFERENCE: some are more matte, some are more glossy, some are thicker than others so they have different amounts of shadow on them from adjacent books, and the dust and physical bumps/divots on the covers/spines (such as the raised/embossed lettering) reflect light differently. And these differences create a kind of richness that your test image is missing.
The more of those effects you can replicate, the better.... is there a way to use paper that's pretty matte, and have some of the covers print more glossily than others? To use the thickness of the physical box/book to estimate how much shadow it would cast onto its neighbor, and digitally composite that in? To add a bit more digital dust to the covers of the older works?
Pavel says:
A fun idea occurred to me; you could set up some sort of printing device that would print book covers as you read them, on some sort of scroll-based roll of paper. As you progress through an e-book, the printer prints more and more of the cover. Abandoned books would be cut off halfway through.
I'm not sure what you'd do about reading multiple books at once, though!
Phil says:
How about turning them into mosaics? You could then shape / display them in a variety of ways: - 3D book with mosaic cover for books, old-computer-of-choice graphic with screen showing mosaic of games etc - series of faux book covers with each book title saying the media type and mosaic around them, eg book 1 title might be Read in 2021, book 2 title 8 Bit Games - traditional mosaic if you have enough images; might need to experiment to find an image with a colour palette compatible with your sources, but could be your face, famous (or not) art you like etc