Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Gradify turns the most prominent colors in an image into a CSS gradient (gradifycss.com)
197 points by bemmu on June 14, 2015 | hide | past | favorite | 35 comments


Really nice effect - I can see this being used on galleries / profiles, etc. What is with the weird scroll behaviour on this page, though? It will refuse to stay where I put it and keeps jumping to odd snap points after a few seconds. Annoying.


The hostile scrolling on the page makes it effectively unusable on mobile


This is why no one downloads the band Hostile Scrolling's app.


Beautiful effect. Well done. (And I have no weird scrolling effects on either Firefox on laptop or Safari on phone, so maybe it was fixed.)


I was just excited when I heard Paint will build a gradient if you shrink a two-tone image to a pixel width and re-expand:

http://www.instructables.com/id/Gradients-in-MIcrosoft-Paint...


Do you have permissions to use those images?

https://m.flickr.com/#/photos/lightofthewild/5611692322/

The left margin is broken on Chrome on iOS. http://m.imgur.com/94fzJrc

The scrolling behaviour make the page impossible to use. The scrolling, and I say this as politely as I can, is fucking horrible and makes me want to smash my phone to little pieces.

Sorry for the negative tone. The actual thing looks cool. It'd be nice to see these gradients being used more often.


> Do you have permissions to use those images?

Wow, you're quite right - there's no attribution on any of the photos. Also, since they're re-hosted onto tumblr it's hard to tell where they came from.

It's possible that the author may have taken all of the photos themself, but unlikely given the example which you've pointed out. It's also possible that the author has sought private permission to use the photos, but you'd probably expect some attribution if that were the case.


I think it would fall under fair use. This is a demo for an open source project.


non-commercial use does not equal fair use.


wow, nice save on this comment :)


Why does the page keep jumping around?


You could blur the image as well. I have tried a similar approach with blur quite awhile ago: http://www.cssdesk.com/VYN67 Change the image URI to see it work on another image.


The point with this method is that the gradient acts as a fill before the image is loaded.


Which one could combine with blurring.

Progressive JPEG with a blur filter depending on how much has loaded yet?

That would be the best solution, probably.


It's an interesting idea to put into a JPEG decoder directly.


Ah, of course.


Great idea!

Found a bug - it doesn't follow the "orientation" property of the image, resulting in photos and gradients that are rotated.

I don't do Python myself, but using PerlMagick, the fix is $magick->AutoOrient();


that property is non-standard. Many viewers don't respect it. So calling it a bug is a bit much in my opinion. More of an RFE.


To fix the horrible scroll (never, ever interfere with the scroll functionality!!!) add this in the console / scratchpad etc.:

window.addEventListener("scroll", function(ev) { ev.stopPropagation(); }, true);


Is the author of this around? There's a rather prominent spelling mistake in the first sentence; it says "prominant" where it should say "prominent" :)


cheers for the heads up, spelling ain't my forte!


Pretty!

Fix the scroll highjacking please.


Nice tool. Looking at devtools, it generates a gradient in each direction (left, right, top, bottom). Each of these gradients is a single color transitioning from fully-transparent to fully-opaque.

The algorithm looks to be breaking the image into the 4 quadrants and finding the dominant color in each quadrant (eliminating any shades that are too gray). e.g. to get the color for the left-to-right gradient, it finds the most dominant color on the right of the image.


This is great for photos but not that useful with product images surrounded by white space as that white space becomes a colour.


actually has a minimum distance from white, white is accepted if there's literally nothing else


Biggest site that uses this technique is pinterest. It's a pretty crucial UI "trick", especially over slow internet connections. A user's pinterest home page is mostly images, and if they didn't use this dominant color trick, the page would look awful until things loaded.


> the 4 most common colors

maybe it would be better to weight pixels by the energy density of the image region so that backgrounds (sky, walls) don't dominate the resultant colors over the (usually more significant) foreground/detailed objects


I have a few todo improvements, but if you'd like to see this one tested/implemented, add as an issue on the github!


I was going to implement this myself in the future as I need something similar. The main difference is that I thought of using an inline svg to have more flexibility in the way gradients look and are positioned.


Tried it out on an image that would be used on a realtor website. Doesn't look too good in my opinion.

http://i.imgur.com/WrbsRcM.png


the js version (that example) isn't as good as the py version


Would using a really large order polynomial be any more help? For example a 10th order best fit?


Larger order polynomials usually just give you more `swing'.


Why don't you just post the 5 or 10 lines of code you're using to create the effect?


They are one click away and more like 200 lines:

https://github.com/fraser-hemp/gradify/blob/master/gradify.p...




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: