From Manual Aesthetic Scores to Automatic Cropping: How I Designed my CropandGrade iOS APP
My journey of Building an iOS Photo Cropping APP in two years with AI
Okay, let’s talk about how my CropandGrade app has evolved to where it is today.
The end result, as you see it now, is an app that lets you easily crop stunning photos.
However, that wasn’t the initial goal, so I need to start from the beginning.
It all started with a “Cinelike Camera” (电影感相机, sorry but Chinese only now) app. You know, the inspiration for that actually came from an open-source model I stumbled upon that could give photos an aesthetic score.
I found that very interesting, so I had a sudden idea: could I combine this model with my beloved Hasselblad XPAN camera?
That’s how the “Film-like Camera” was born.
This app was very simple; while taking a photo, it would give it a real-time aesthetic score from 0 to 10. Photos below 4.5 points would basically be discarded. So, this app would only save photos with scores above 4.5.
Imagine, each time you pressed the shutter, it was a bit of a thrill, right?
But, even though some friends liked the app, it took me a really long time to make.
So when it was finally successfully launched, I felt a real sense of accomplishment.
You know, it was my first app completely written with AI!
Back then, we didn’t have the advanced AI programming tools we have now.
I had to paste the code line by line into GPT and then copy it out.
GPT 3.5’s context window was also very short, only about 8000 tokens, so it was a very painful development process.
I have to summary the code by myself.
However, I didn’t give up.
Later, I wanted to make a lighter app, and I still wanted to use that aesthetic scoring model.
So, I thought, what if I let users import pictures directly, and then, while cropping, they could see the aesthetic score change in real time?
This way, they could judge if their crop was making the photo look better. However, the technological limitations were still quite large at the time.
I had to piece together two unrelated modules: an open-source cropping framework with a lot of code I wasn’t familiar with, making modifications very painful, and a multi-step undo/redo feature I wanted to implement, which also required a lot of coding and was very difficult.
But ultimately, I managed to stitch these two modules together, and that’s how the prototype of the CropandGradeapp you see today came about.
This app clearly bears the imprint of my early tech-driven thinking — I started with a technology and then built a product around it.
But the story didn’t end there.
These events took place in 2023, when AI programming was just emerging. I remember the “Film-like Camera” was initially written with GPT 3.5, which couldn’t even write complete iOS code.
But then GPT 4 came along, and I could develop with more confidence and fewer code errors.
Logically, for a lightweight app, the initial scope of development should have ended there.
But as you know, by 2025, my app had another major update, with the most important feature being the automatic cropping that I had always wanted to do.
Many friends had asked me if I could add automatic cropping, but my development skills were limited, so I couldn’t do it.
You know, my development capabilities are largely limited by the AI’s programming abilities.
Apart from learning some data visualization analysis code years ago, I basically know nothing about SwiftUI.
But recently, with all this intensive development, I can understand the code pretty well, though the more complex parts are still a bit of a mess.
Now, many people are debating if AI will steal the jobs of product managers and programmers.
I don’t think so, I really don’t.
Actually, back in October 2023, I already developed a version of CropandGrade with GPT 3.5 , which was already quite complete.
But it’s clear that the current version, developed with GPT4o, Cursor, and Claude 3.5 Sonnet, has much more comprehensive and attractive features.
So, let’s think about it further.
A lot of products out there are not that mature or engaging, but especially independent developers often have a very complete and very interesting product idea in mind.
With the help of these AI tools, we can more easily and effectively bring the more perfect product from our minds to life.
So, I actually think this is a long experiment of AI and humans coexisting, and it’s very interesting.
I don’t think AI will make us all unemployed.
On the contrary, I think those who have ideas and execution skills will make good use of this revolution and bring our interesting ideas to fruition, and best of all, earn income from it.
So, later, I did that… After creating that course, it suddenly occurred to me that we could iterate on CropandGrade app.
So we used a clever method to iterate on the app this time.
Here’s how it works:
First, we read the full image and give it an aesthetic score. Then, we set different crop ratios, such as 16:9, my favorite 65:24, which is that super widescreen view, and some others like 1:1. Then, we also have a scaling ratio — how much can the photo zoom in — and a step value, meaning each zoom increment is 10% or 20%. So, this creates many potential cropping combinations for one photo. For example, if my original photo is 16:9, when I crop it to 1:1, if I don’t zoom in, it will move from left to right for continuous cropping. Each time, it will give an aesthetic score, and then save the photo with the highest aesthetic score.
At the same time, I also made a small change that many may not have noticed: the current interface has two windows, top and bottom.
The top part retains and maintains the photo with the highest score in real-time, and the bottom part is the cropping frame you are working on. The animation looks pretty interesting.
And when we are previewing in the top window, we can double-tap the photo, and it will quickly save the view in the bottom window. Even if AI thinks it’s not a particularly good-looking photo, you can still save it.
When using the app, I’ve found that often photos I think are strong, AI doesn’t give a high score.
I think one possibility is that the model has compressed the image a lot, so the resolution it reads is not very high.
Anyway, that was all in the previous version. But in the new version, I’ve noticed that the cropped image can often be too small. I’ve found it especially likes monochrome backgrounds, but as one user pointed out, when they take an environmental portrait, AI will cut out the person.
So, I realized that this issue often arises.
Then I thought, I could at least save one photo for each ratio combination.
This way, after one cropping pass, instead of only leaving one photo that the app considers the best, a collection of app-approved photos would remain.
That means, for each scaling ratio combined with aspect ratio, at least one photo will be available for the user to choose.
This makes it easier for the user to generate good-looking photos with different crop ratios for various platforms and needs in one go.
That is the basic process of how I developed Crop and Grade.
In the future, it will only get better.