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.instance_variables, image.color_profile, 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