
Film Emulator - Photo editor
Film emulation editor. Edit images with the different types of film stock
teldrin · com.teldrin.filmemulator
UpdatedOct 15, 2024
PublishedJun 18, 2021
Packagecom.teldrin.filmemulator
MD58b27275af5ac7f3e5dc5dadbcfe75585
SHA1 (signer)5E:04:D5:38:5B:FF:61:B8:48:CE:50:79:29:94:AD:63:38:AB:FF:7F
Signed byCN=Android, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US
Malware scanUNKNOWN
Contact[email protected]
Description
This app is a film emulation editor that lets you edit picture images with the color response of many different types of film stock.
This app features 166 different presets designed to replicate various film stocks from Agfa, Analogfx, Kodak, Ilford, Polaroid, and Fuji film.
I hacked together a little analog film emulation tool in Javascript. It's based on the awesome work of Pat David. I wrote it mainly to play with some new tech but I liked the result enough to share it with you. You can try it here.
How the Film Emulation works
I guess the most interesting part for most people is the actual film emulation code. It's using Color Lookup Tables (cluts).
So in simplistic terms:
For every pixel in the image
Take it's color values r, g, b
Look up it's new color value in the lookup table
r', g', b' = colorLookupTable[r, g, b]
Set the pixel to the color values (r', g', b')
In practice there are a few more considerations. Most cluts don't contain values for all 16 777 216 (224) colors in the rgb space. A simplistic solution to this problem would be to always just use the closest color (nearest-neighbor interpolation). This is fast but results in very ugly banding artifacts.
So to keep things fast I use random dithering for the previews and trilinear filtering for the final output. The random dithering is probably a suboptimal choice, but it was easy to implement.
You can find more details about how the lookup tables were create on Pat Davids website.
This app features 166 different presets designed to replicate various film stocks from Agfa, Analogfx, Kodak, Ilford, Polaroid, and Fuji film.
I hacked together a little analog film emulation tool in Javascript. It's based on the awesome work of Pat David. I wrote it mainly to play with some new tech but I liked the result enough to share it with you. You can try it here.
How the Film Emulation works
I guess the most interesting part for most people is the actual film emulation code. It's using Color Lookup Tables (cluts).
So in simplistic terms:
For every pixel in the image
Take it's color values r, g, b
Look up it's new color value in the lookup table
r', g', b' = colorLookupTable[r, g, b]
Set the pixel to the color values (r', g', b')
In practice there are a few more considerations. Most cluts don't contain values for all 16 777 216 (224) colors in the rgb space. A simplistic solution to this problem would be to always just use the closest color (nearest-neighbor interpolation). This is fast but results in very ugly banding artifacts.
So to keep things fast I use random dithering for the previews and trilinear filtering for the final output. The random dithering is probably a suboptimal choice, but it was easy to implement.
You can find more details about how the lookup tables were create on Pat Davids website.
Required features
- Faketouch android.hardware.faketouch
Permissions (26)
Film Emulator - Photo editor requests the following Android permissions:
- Access Network State android.permission.ACCESS_NETWORK_STATE
- Internet android.permission.INTERNET
- Read App Badge android.permission.READ_APP_BADGE
- Receive Boot Completed android.permission.RECEIVE_BOOT_COMPLETED
- Vibrate android.permission.VIBRATE
- Wake Lock android.permission.WAKE_LOCK
- Write External Storage android.permission.WRITE_EXTERNAL_STORAGE
- Com Amazon Device Messaging Permission Receive com.amazon.device.messaging.permission.RECEIVE
- Com Anddoes Launcher Permission Update Count com.anddoes.launcher.permission.UPDATE_COUNT
- C2dm Permission Receive com.google.android.c2dm.permission.RECEIVE
- Com Htc Launcher Permission Read Settings com.htc.launcher.permission.READ_SETTINGS
- Com Htc Launcher Permission Update Shortcut com.htc.launcher.permission.UPDATE_SHORTCUT
- Com Huawei Android Launcher Permission Change Badge com.huawei.android.launcher.permission.CHANGE_BADGE
- Com Huawei Android Launcher Permission Read Settings com.huawei.android.launcher.permission.READ_SETTINGS
- Com Huawei Android Launcher Permission Write Settings com.huawei.android.launcher.permission.WRITE_SETTINGS
- Com Majeur Launcher Permission Update Badge com.majeur.launcher.permission.UPDATE_BADGE
- Com Oppo Launcher Permission Read Settings com.oppo.launcher.permission.READ_SETTINGS
- Com Oppo Launcher Permission Write Settings com.oppo.launcher.permission.WRITE_SETTINGS
- Com Sec Android Provider Badge Permission Read com.sec.android.provider.badge.permission.READ
- Com Sec Android Provider Badge Permission Write com.sec.android.provider.badge.permission.WRITE
- Com Sonyericsson Home Permission Broadcast Badge com.sonyericsson.home.permission.BROADCAST_BADGE
- Com Sonymobile Home Permission Provider Insert Badge com.sonymobile.home.permission.PROVIDER_INSERT_BADGE
- Com Teldrin Filmemulator Permission C2d Message com.teldrin.filmemulator.permission.C2D_MESSAGE
- Com Teldrin Filmemulator Permission Receive Adm Message com.teldrin.filmemulator.permission.RECEIVE_ADM_MESSAGE
- Me Everything Badger Permission Badge Count Read me.everything.badger.permission.BADGE_COUNT_READ
- Me Everything Badger Permission Badge Count Write me.everything.badger.permission.BADGE_COUNT_WRITE