We've always enjoyed the challenge in writing and optimizing image- and audio processing code for resource-constrained devices. In 2005 we made PullFace, an image warping application for Sony Ericsson Java ME phones. The user could warp a photo in real time using a cursor (which was controlled by pressing the buttons of the device). PullFace was quite impressive for that platform and that time. PullFace 2 has been preloaded on several Sony Ericsson devices.
IPhone
We started developing for iPhone about a year ago. Everything was of course great compared to other platforms but we were a little disappointed/surprised that you couldn't access and process the video stream from the camera in real time. So instead of making a camera based app we made Drunkalizer, an app that processes your voice so that you sound drunk. (If you try it, speak a long sentence and drag the whiskey level to the bottom).
Then Apple made it possible to have an overlay on top of the viewfinder so we made MixFace, a simple photo app that lets you mix face parts using the camera viewfinder.
Anyways, both of these apps served as tests, letting us know the platform and market. MixFace has almost died. Drunkalizer has become popular here in Sweden where it has been on TV and radio, used on celebrities such as Skid Row and Anna Anka (Paul Anka's ex-wife, yes it's true!).
UIGetScreenImage, An Ugly Hack and the Mother of Low Resolution
In December '09 Apple allowed developers to use the private method UIGetScreenImage that lets you capture parts of the screen. Even before that, it had been used by some applications (the most well known is RedLaser) to capture images from the camera viewfinder. It is an ugly hack for something that would resemble real video stream access. For this to work the viewfinder needs to be visible on the screen, so it's impossible to show fullscreen live effects, and the resolution of the captured image will not be greater than the screen.
Applications that use this technique for real time effects can be exposed by pressing the iPhone volume control as the ringer icon will be captured by the screen dump. If not, the application uses private methods of the camera API and if it makes it to the App Store it might not last long. One app that had a fullscreen filter preview was Qik Video.
(As we really wanted Lenses to have fullscreen filter preview we ran Qik Video on an iPhone using gdb (a debugger, lets you see which API:s are used and what methods are called) and we noticed that there were no calls to the public and allowed UIGetScreenImage but a lot to the private IOSurface* API. A few weeks later the Qik Video app was gone from the App Store. Hopefully it will be back when iPhone OS 4.0 is out as the camera API has been completely revised and it seems like real video stream access is finally going to be supported).
The first Lenses app
When UIGetScreenImage was allowed we started developing Lenses. We wanted to create a photo app with a real time filter preview. We belived it could be a new way, or at least a nice way, to capture photos, having a real time preview while adjusting both the filter paramters and the camera angle, position of the subject etc.
Lenses 1.0 was released in January. It was a bit too early as it had a few bugs and some important functionality missing (load from camera album and more). It was far from a success in the App Store, even though it was appreciated for its potential by some devoted iphoneographers.
The New Lenses app
Creating a simple photo application and releasing it without any marketing will not work. The feedback we got from the iphoneography community (iphoneography.com) inspired us to improve Lenses. We want to make it a camera app that focuses on photography, filters, creativity and quality. Not build it around a gimmick. Make it more community driven by implementing filters and functionality that the users actually want.
Below is a short demonstration of the upcoming Lenses 1.2. It's almost ready for our beta testers.
The Ambition
Our hopes are that this blog and this approach to creating a photo app will be interesting enough to get users, potential users and other developers involved in discussing filters and application functionality. We believe that this is the best way for us to create a great photo app. Also, we will be very open with the implementation of Lenses, share image processing code and algorithms, etc. A little bit of a win-win for all.
Note: The version of Lenses currently (at the time of writing) available at the App Store is version 1.0. While we're still working on this major update the price will be 0.99$. So support us and make yourself a little investment by buying it now instead of waiting until the update arrives. :D
Best Regards
Gustaf Jorlin (friendly, sitting)
Jens Persson (focused, standing)
Twitter: @bitCycle