1

I want to create a window icon (128x128 at most, the icon in the corner of the window on Windows is 24x24, I believe) from a large image (1024x768 and more). I've tried several algorithms - nearest neighbor, bicubic interpolation, but they all produce a very soft and barely recognizable image.

Do I need content-aware resize for this task?

1

Generally when you want to make an icon in multiple sizes, you start with vector graphics which will allow you to resize without losing any information. From there, you can resize it to the size of the icon and make the icon. This is ideal. Resizing from existing images is problematic since, unless it is a precise reduction in size (1/2x 1/4x 1/8x, etc.), pixels are going to have to be approximated even by the best algorithms.

If you have the original image, there are ways of "tracing" the image to be drawn as a svg file in Inkscape. You lose a little bit of definition, but you can also make adjustments until it is closer to what you started with. Once you have that, it is much easier to switch from svg format to other formats.

Hope that helps!

  • What I'm doing is not making a single icon for my application from a single image. I'm making an image viewer app, and I want its every window to display a small icon of the image currently being viewed. But that doesn't make much sense when the image is too soft. – Violet Giraffe May 30 '14 at 7:11
  • 2
    @VioletGiraffe Hmm, in that case I see what you mean. I know for a fact that the methods browsers use to resize images are fairly complicated (reference). I don't think this is so straightforward. Have you considered opening your images in a browser control and letting the "browser" do the work of resizing? – Neil May 30 '14 at 7:21
  • @violet what stops you from converting the larger image to a vector image? – Pieter B Jul 29 '14 at 8:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.