Resize Images from Amazon S3 Like a Pro with PictureThing

Let’s be honest—image processing is one of those annoying, necessary evils when building a modern web app or SaaS. Users upload images, you need them in multiple sizes, different formats, maybe optimized for retina displays, and you don’t want to pay a small fortune or write a custom Lambda function that’ll turn into a maintenance nightmare six months down the line.

That’s why I built PictureThing: a lightweight, powerful image conversion API that plugs right into your stack and plays really well with Amazon S3. If you’re building a product and you care about performance, scalability, and not burning money on overengineered solutions, this one’s for you.

Why PictureThing?

Most cloud image services fall into one of two camps:

  1. Overkill – bloated SDKs, feature creep, pricing models that make your CFO twitch.
  2. Underwhelming – slow, unreliable, or just too limited.

PictureThing sits right in the sweet spot. Built on Azure Functions but totally agnostic to where your images live, it gives you simple, fast, URL-based access to powerful image transformations.

Let’s walk through how to hook it up with your S3 bucket and use it to resize images on the fly.


Step 1: Store Your Images in S3

You’re probably already doing this. If not, here’s the quick version:

  • Create an S3 bucket.
  • Enable public access (or signed URLs if you’re being cautious).
  • Upload your images.

Let’s say you’ve got an image at:

https://your-bucket.s3.amazonaws.com/uploads/dog.jpg

Take that and append it to the end of a PictureThing URL:

PictureThing works entirely via GET parameters. No SDK, no magic headers, no weird base64 hashes. Just a dead-simple image proxy pipeline that speaks URL.

Here’s a basic resize example:

https://api.picturething.com/convert/width=400,format=webp/https%3A%2F%2Fyour-bucket.s3.amazonaws.com%2Fuploads%2Fdog.jpg

We have a Cloudflare Images compatible API, so thing like this just work as expected:

ParamWhat it does
widthTarget width
heightTarget height
fitHow to fit the image (cover, contain, fill, etc.)
formatOutput format (jpg, png, webp)
qualityCompression level (1–100)

Want retina support? Just add dpr=2.

Need a square thumbnail? Try fit=cover&width=200&height=200.

Grayscale? Flip? Trim? All built in. Have a look at our docs for more.


Step 2: Use It in Your App

Just append your PictureThing API Key to the URL and you’re good to go. Try it out now with our dynamic url builder.

No processing backend required. No extra infrastructure. No user waiting 4 seconds for a 5MB JPEG to load on their phone.


Why It Matters for SaaS and Web Apps

If you’re building a platform where users upload content (think profile pics, logos, product images), here’s what PictureThing gets you:

  • Zero infrastructure – No EC2, no Lambda, no queues, no Fargate voodoo.
  • URL-based transformations – Easily test and tweak in your browser.
  • Simple fair pricing – No ridiculous fees just for image processing.
  • Cache-friendly – Use it with Cloudflare, Fastly, or just browser caching.
  • Dev-friendly – No lock-in, no black boxes, no surprises.

Bonus: Preserving Privacy and Control

If your S3 bucket is private, you can still use signed URLs. Just make sure the src includes the full signed URL string (including your auth token). PictureThing will fetch it server-side and apply the transformations.


TL;DR

  • PictureThing + Amazon S3 = seamless, low-cost image processing.
  • No vendor lock-in, just clean, composable URLs.
  • Great for web apps, dashboards, marketplaces, SaaS—you name it.
  • Spend more time building your product and less time duct-taping an image stack.

So what are you waiting for?

Integrating PictureThing with UploadThing provides a robust, professional solution for managing images in web applications, greatly enhancing performance and user satisfaction.

Get Started