ryanwold.net

A civic-minded citizen seeking the singularity

A project

Pandigital .gem


Pandigital .gem

  • find the Pandigital frame size (in pixels)
  • start the Ruby service
  • install Carrier Wave
  • determine how and where to store these items
  • upload a picture and convert it to the Pandigital size
  • publish the .gem
  • I have published the .gem on Github
  • I have at least 50 images loaded on my Pandigital frame at home # Pandigital .gem

A few years ago, I received a Pandigital digital picture frame.

This weekend, I wanted to complete a task I've had on my to-do list for too long.

My goal was to automate the processing of a folder of images down to 800px wide by 480px tall, which is the size of the frame. To do this, I set out to use the RMagick gem, which leverages ImageMagick, a software library for processing image files with programming commands, rather than a software package with a UI.

Within 15 minutes, I was able to read images from a folder and resize them. Sweet! Done. Nope.

When I loaded the files onto the Pandigital frame, several files were showing as "Format not Supported!" Hmm.

And, then I went down a rabbit hole. Willy nilly, trying random methods, trying to discern patterns of file format, file size, file dimensions. Then, image.properties, image.inspect, image.instancevariables, image.colorprofile, and more. After 10 hours, I had to step back. WTF. I ge in to deep and forget, what am I trying to do? I could have resized about 100 images in this folder using MS Paint in about an hour. 10 hours. WTF.

But it's about the principal, right? I set out to automate this. I got the automation down, but I ran into a related problem, of the images not loading.

So, I loaded the images straight to the frame, without doing any custom processing on them, and I noticed that the same images would still show. There was something about the file metadata. I was able to rule out aspects of the image data, dimensions, file size/format, etc. So, what metadata hangs off a JPEG file?

I decided to run experiments in order to get to a resolution.

Experiment 1

do: image.strip! profiles and see if the images are still valid.

determine: do the images load in the frame after running image.strip?

result: NO

Experiment

Goal: Determine if. And if, exactly which profiles are required.

Add all profiles to another working image

This will tell me whether if is a valid line of exploration. If so, proceed

Technologies used: ruby, images, and pandigital