6 ms·
Bringing Wide Color to Instagram
- mikeyk 10y agoHere if anyone has questions on the implementation or such.
- sosuke 10y agoI this why iPhone photos of red roses, or other vibrant roses look poor? I love the idea of a photo room is it hand painted?
- therealmarv 10y agoYes they look poor if you watch them on not color managed software environments (should not happen on Apple devices). See here a sample image https://code.google.com/p/android/issues/detail?id=225281 https://code.google.com/p/android/issues/detail?id=225281
- realschnabler 10y agoNot necessarily on topic - but given your code samples are written in Objective-C, how much of your codebase is still in Objective-C and what's your opinion on porting it over to Swift?
- perfmode 10y agoThe swift compiler is probably too slow for projects as large as instagram.
- nstj 10y agoPeculiar this is being downvoted - compiler speed / reliability / support for incremental builds are all issues with large Swift projects. I've even see people go as far as splitting up their project into frameworks in order to bring build times below times as large as 10m and restore incremental compilation.
- coldtea 10y agoThe swift compiler is used in many large projects. And you probably overestimate how large Instagram, the app, is.
- mikeyk 10y agoGood q. All of it is still Objective C and C++; there's a few blockers to starting to move to Swift, including the relatively large amount of custom build + development tooling that we and FB have in place.
- pmf 10y agoHi Mike, since Instagram is listed in the React Native Showcase, could you tell us where are you using it? Thanks in advance. https://facebook.github.io/react-native/showcase.html https://facebook.github.io/react-native/showcase.html
- dvdhnt 10y agoI'd like to know this, too.
- mikeyk 10y agoIt's getting used more and more in our app--few recent examples are the "Promote Post" UI if you're a business account and want to promote a post from inside Instagram, the Saved Posts feature, and the comment moderation tools we now provide around comment filtering.
- vanderZwan 10y agoBit of a jump in topic, but I'm kind of curious: I don't use instagram myself, bugt I'm sure it resizes images for online viewing, saving bandwidth ans such. Does it do so with correct gamma[0]? Since that's a thing many image-related applications get wrong. [0] http://blog.johnnovak.net/2016/09/21/what-every-coder-should-know-about-gamma/ http://blog.johnnovak.net/2016/09/21/what-every-coder-should...
- mark-r 10y agoIf it's using Pillow for the resizing, probably not. I've not looked at Pillow specifically, but PIL certainly wasn't very good.
- vanderZwan 10y agoThat would be a bit sad, given that they went through all the trouble of getting wide colour.
- wiredfool 10y agoPillow doesn't do anything with gamma by default, nor does it require that color management be compiled in. (I'm a maintainer of pillow)
- ec109685 10y agoThey don't store full resolution images: Square Image: 1080px in width by 1080px in height Vertical Image: 1080px in width by 1350px in height Horizontal Image: 1080px in width by 566px in height
- aus_ 10y agoIs Wide Color preserved when processing video?
- mikeyk 10y agoPhotos only. Apple's APIs only capture in Wide Color when shooting in photo mode, and their documentation only recommends using wide color/Display P3 for images.
- colanderman 10y agoDo you test with Adobe RGB (which many prosumer cameras can output) or only P3 (which AFAIK only Apple devices output)?
- mikeyk 10y agoJust P3, though the wider gamut available in our graphics operations should benefit photos brought in using Adobe RGB too since iOS is fully color managed.
- terhechte 10y agoI know there's not much love for the API these days, but is / will there be a way to access wide color images from the API? iPads and Macbook Pros also have wide color screens nowadays, so it would make sense to display them for specific use-cases in third party clients.
- Nav_Panel 10y agoGreat article. Question not directly related to your writeup: in your casual usage of a phone/photo app with the new, wider color space, do you notice a difference in your experience of using the app/looking at images? Or, in other words, does the wider color space feel at all different?
- dTal 10y ago"When we started this project, none of us at IG were deep experts in color." This is pretty astonishing to me. I always thought applying smartly designed color filters to pictures was basically Instagram's entire value proposition. In particular, I would have thought that designing filters to emulate the look and feel of various old films would have taken some fairly involved imaging knowledge. How did Instagram get so far without color experts?
- argonaut 10y agoI was never under this impression. I was always under the impression the filters are just created by a designer playing around with various effects until it looked nice.
- elastic_church 10y agoBecause it isn't complicated or novel to make compressed 8-bit jpegs have color filters. There are tools for the job and they've been around for a long time. Working in a different color space than standard requires a little bit of familiarity and finesse that modifying 8-bit jpegs for consumption on the internet did not require. Many photographers and printers are familiar with this dilemma in a variety of circumstances, where the cameras create images in a different color space and higher bit depth that can't be perceived at all with any technology or the human eye.
- matt4077 10y agoI'm sure the comment you're replying to wasn't thinking of the algorithm that applies a filter to a jpeg, but the process by which that filter is created in the first place. The assumption being that there's some sort of theory to colour that allows you to systematically improve the aesthetic qualities of images. As an analogy, think of the value music theory (i. e. https://en.wikipedia.org/wiki/Scale_(music)#Harmonic_content https://en.wikipedia.org/wiki/Scale_(music)#Harmonic_content) for composition.
- elastic_church 10y agoThe creative process isn't novel. There isn't even the capability of any layer masking in most mobile apps, including Instagram, compared to pre-existing more robust tools on desktop (and other mobile apps), severely limiting the 'technical interestingness' to begin with.
- vladdanilov 10y agoIt's great you listen. So I'll try. 1. Scaling down in linear colorspace is essential. One example is [1], where [2] is sRGB and [3] is linear. There are some canary images too [4]. 2. Plain bicubic filtering is not good anymore. EWA (Elliptical Weighted Averaging) filtering by Nicolas Robidoux produces much better results [5]. 3. Using default JPEG quantization tables at quality 75 is not good anymore. That's what people referring as horrible compression. MozJPEG [6] is a much better alternative. With edge detection and quality assessment, it's even better. 4. You have to realize that 8-bit wide-gamut photographs will show noticeable banding on sRGB devices. Here's my attempt [7] to reveal the issue using sRGB as a wider gamut colorspace. [1] https://unsplash.com/photos/UyUvM0xcqMA https://unsplash.com/photos/UyUvM0xcqMA [2] https://cloud.githubusercontent.com/assets/107935/13997633/a30d90a2-f0f8-11e5-8705-9e603a00e1a0.png https://cloud.githubusercontent.com/assets/107935/13997633/a... [3] https://cloud.githubusercontent.com/assets/107935/13997660/bd07d116-f0f8-11e5-98d8-dab05f40b220.png https://cloud.githubusercontent.com/assets/107935/13997660/b... [4] https://cloud.githubusercontent.com/assets/72159/11488537/3da372b4-97bf-11e5-93d1-7b0923a0a973.png https://cloud.githubusercontent.com/assets/72159/11488537/3d... [5] http://www.imagemagick.org/Usage/filter/nicolas/ http://www.imagemagick.org/Usage/filter/nicolas/ [6] https://github.com/mozilla/mozjpeg https://github.com/mozilla/mozjpeg [7] https://twitter.com/vmdanilov/status/745321798309412865 https://twitter.com/vmdanilov/status/745321798309412865
- unhammer 10y agoI thought there was something familiar about that name Robidoux … I see he's the same one that got some crowdfounded work on GIMP's new scaling methods: http://libregraphicsworld.org/blog/entry/advanced-samplers-for-gegl-to-be-crowdfunded http://libregraphicsworld.org/blog/entry/advanced-samplers-f...
- bronxbomber92 10y agoWhat is the pixel format of your OpenGL surfaces?
- therealmarv 10y agoMaybe a stupid question. But how to save an image as Display P3 JPEG from Photoshop? I want to play with this color standard.
- buss_jan 10y agoOur iOS dev hunkered down today and may have come up with a decent solution to your EAGLView issue. You can find the write-up on medium: https://medium.com/imgly/bringing-wide-color-to-photoeditor-.. https://medium.com/imgly/bringing-wide-color-to-photoeditor-....
- rubberbandage 10y agoYour link somehow got truncated. Here’s the full thing: https://medium.com/imgly/bringing-wide-color-to-photoeditor-sdk-a6ce8bb19ef7#.hwwteu665 https://medium.com/imgly/bringing-wide-color-to-photoeditor-...
- grenoire 10y agoI did not know that Instagram was using OpenGL for processing. That's pretty neat, given the capabilities of OpenGL. I'm looking forward to seeing more filters with more lifelike Polaroid effects. But before that, could they not convert images to horribly encoded JPEGs? I get it, bandwidth and costs, but it's an image service that still drowns in its own... when it gets an image with strong reds and blues.
- mikeyk 10y agoWe started using OpenGL in 2011. Our CPU-based image filters used to take 4+ seconds with pixel-by-pixel manipulation, and now can render 30+ times per second. If you have some sample images where the current image pipeline is going wrong let me know and we can look into improving.
- osi 10y agoI think that's back when Gotham died :/ http://randsinrepose.com/archives/rip-gotham/ http://randsinrepose.com/archives/rip-gotham/
- nrjdhsbsid 10y agoInstead of fixing the horrible JPEG encoding can you please add support for webp? It's quite a bit smaller and well supported with polyfills since it's just a single vp8 frame
- tossedaway334 10y agopolyfills in general are a really awful user experience. They are typically pushed by people who use the latest chrome, so they have an excuse not to care about other browsers. Their preformance, and usability is almost invariably terrible.
- dbbk 10y agoYou don't need a polyfill to deploy Webp. Chrome automatically sends webp in the Accept headers for images, so on the CDN level you could implement some logic to seamlessly swap in Webp images for the browsers that support it. Imgix does this for instance.
- andresgottlieb 10y agoNote that the red test image is only valid for iOS devices, since in Android you can see the Instagram logo even though it doesn't support wide color
- PeanutNore 10y agoI can't see the Instagram logo in the red test image on Windows 7
- dgant 10y agoOn Windows, I can see the logo on one of my screens, but not the other.
- kibwen 10y agoYes, was a bit confused when I opened the image on my ancient work computer (Windows, old Dell monitor) and could see the logo clearly. Interestingly, Chrome refused to display the image despite it nominally being a PNG, and I had to open it via an external program. Dragging the window to my second monitor (different model) causes the logo to vanish (though I do feel like I see it for a split second on the second monitor... optical illusion?).
- bentpins 10y agoChrome should be able to display it fine. The dl=1 param on the Dropbox URL means the request is served with a response header indicating it's a download. Change the link to dl=0 and it won't force the download.
- owenversteeg 10y agolink for the lazy: https://www.dropbox.com/s/tgarynpj65ouafd/insta-logo.png?dl=0 https://www.dropbox.com/s/tgarynpj65ouafd/insta-logo.png?dl=... By the way, anyone who can display it (all my nice monitors aren't with me at the moment) can you see it on this imgur link? http://i.imgur.com/qCna54M.png http://i.imgur.com/qCna54M.png
- gojomo 10y agoLink for viewing 'canary image' in browser, without triggering download/dropbox: https://imgur.com/a/v82GI https://imgur.com/a/v82GI (Indeed, I can see a faint Instagram logo on my iPhone7, but not my older rMBP.)
- phinnaeus 10y agoImgur seems to be changing the profile or somesuch because I can see the logo when I downloaded the image but not on the imgur image here.
- NSAID 10y agoSame. Here's the link from the article with the download flag removed: https://www.dropbox.com/s/tgarynpj65ouafd/insta-logo.png https://www.dropbox.com/s/tgarynpj65ouafd/insta-logo.png
- howderek 10y agoAlso changes the profile, I can see the instagram logo here but not on the download
- squeaky-clean 10y agoReally strange! I get the same behavior. I thought it was maybe Chrome vs my image viewer, but if I open the downloaded image with Chrome, it's just pure red, but the preview in Dropbox I definitely (faintly) see the logo. If I right click and save the dropbox preview, I get a 14kb image, but the downloaded image is 29kb. As far as I can tell they're both PNGs with the same bit depth.
- gojomo 10y agoInteresting! From this link, I also see the logo on my rMBP (in Chrome or Safari) – but not in the IMGUR link I posted above, even though the IMGUR link reveals the logo on an iPhone7 iOS/10 MobileSafari. Changing Chrome/OSX to report its User-Agent as iOS9 MobileSafari does not help get a different image from IMGUR.
- crymer11 10y agoIf you have a Macbook and can't see the logo on the canary image, try changing the color profile for your display. On my mid-2014 rMBP, the default color profile was "Color LCD", but I could change it to "Display P3" and see the logo. To make the change: System Preferences -> Displays -> Color
- IshKebab 10y agoBut unless the display actually supports wide colour gamuts that will just make everything look worse.
- mschuster91 10y agoThanks for the hint. On my 2015 Retina MBP, when opening the IG image in Preview, I see the IG logo. However, when dragging the image into Chrome, I do not see it. How do I get Chrome to do proper rendering?
- cletus 10y agoOk, so now that's done. How about the ability to zoom?
- arnarbi 10y agoUpdate the app? I can zoom in Instagram, both iOS and Android. Apparently since 18 weeks ago: https://www.instagram.com/p/BJxv5WthYas/?hl=en https://www.instagram.com/p/BJxv5WthYas/?hl=en
- yladiz 10y agoI'm not sure if this is different in the iPhone 7, but the 6S is pretty terrible at color representation in photos, specifically when dealing with neon lights. The iPhone tends to overexpose the neon light to make up for the surrounding being darker, so to get a 'decent' shot, I have to down the exposure by about 2/3 on the 'brightness' in the normal Camera app. But in general, it has a hard time showing as good of color as you would be able to capture in a better camera. For example, I've taken some photos of museum paintings during a visit, and the colors tends to be a little darker and not truly representative (yellows appear like mustard rather than a brighter yellow, for example). I'd love to be able to take more color accurate photos, and it would be more worth it to get the iPhone 7 if that's the case.
- therealmarv 10y agoThat's more a problem of the camera and ISP and not color management and display.
- therealmarv 10y agomeaning DSP (easy confused).
- yladiz 10y agoThat's what I figured. I hope that the sensor becomes better and better, so that one day I can take great neon light photos (as well as see the correct color of red).
- ramzyo 10y agoAwesome, would be great to see in-app support for 2x optical zoom on the iPhone 7+ next
- mikeyk 10y agoWe built this in already! We don't have a "1x" or "2x" indicator, but the dual lens camera is fully used in Instagram now and will do the smart transition between 1x>2x optical and 2x+ digital zoom.
- eslaught 10y agoAre browsers generally color-correct? I was going through the Webkit wide color examples and was getting different visual results on different browsers[1]: https://webkit.org/blog-files/color-gamut/ https://webkit.org/blog-files/color-gamut/ [1]: Compared Safari, Firefox and Chrome on a 2016 MacBook Pro w/ Touchbar running macOS 10.12.
- mikeyk 10y agoBrowsers are all over the place, unfortunately. It's part of why sRGB because the only reasonable color profile for Web use. I think we'll see wide color become common in apps before the Web.
- gsnedders 10y agoAll over the place in what way? Support for different color profiles? Actually handling color spaces at all? The fact that there's no consistency when it comes to untagged images? The mess which is plugins? The ability to specific CSS colors in a specific color space?
- TheRealPomax 10y agoSo... what is "wide color"? Are we talking https://en.wikipedia.org/wiki/Wide-gamut_RGB_color_space https://en.wikipedia.org/wiki/Wide-gamut_RGB_color_space or something else that has no documentation anywhere on the internet? Not trolling, I care an incredible amount about color spaces, and had expected support for something like the UHDTV Rec.2020 color space with D65 (cool/blue white), not an obscure Adobe standard with D50 (warm/yellow white). It's wider than Rec.2020 though, so if this is what you're talking about: awesome, please update your article so people can find out more about this color model and the rest of the world can catch up!
- cmelbye 10y agoIt was in the fourth paragraph: > The color space that Apple chose for its devices going forward is Display P3. https://en.wikipedia.org/wiki/DCI-P3 https://en.wikipedia.org/wiki/DCI-P3
- TheRealPomax 10y agoHow extremely disappointing.
- planteen 10y agoCool article. Another things worth mentioning is that lots of professional photo & graphics people have been using the Adobe RGB color space for almost 20 years which is "wider" than sRGB.
- therealmarv 10y agoWhen on Android? I also opened a bug on Android Bugtracker: https://code.google.com/p/android/issues/detail?id=225281 https://code.google.com/p/android/issues/detail?id=225281 and it is marked as a small issue. On Android we are lacking color management and are only restricted to sRGB. Original Wide Gamut and P3 images look dull on Android devices. I also want good wide P3 colors and color management without buying an iPhone.
- simonjgreen 10y agoThe canary image in the article displays fine on my S7
- petters 10y ago"What every coder should know about gamma" may be of interest here. http://blog.johnnovak.net/2016/09/21/what-every-coder-should-know-about-gamma/ http://blog.johnnovak.net/2016/09/21/what-every-coder-should...
- deleted 10y ago[deleted]