janko / image_processing

High-level image processing wrapper for libvips and ImageMagick/GraphicsMagick
MIT License
873 stars 77 forks source link

Is sharpening enabled or not? #78

Open collimarco opened 3 years ago

collimarco commented 3 years ago

After upgrading to Rails 6.1 I noticed a change in the thumbnail image quality... they seem a little bit blurred. I don't know if this happened some months ago or after the upgrade, however I think that the quality of images was better 1 year ago when we decided the compression options.

Then I have also found this: https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#active-storage-now-requires-image-processing

Now I am really confused and I cannot find a clear documentation about sharpening and other options enabled by default by this gem.

  1. Does resize apply sharpening automatically?
  2. Does resize_to_fit/limit/fill apply sharpening automatically?
  3. Is sharpening applied automatically by this gem in the following case (that doesn't use resize and doesn't use resize_to_*)?
  image.variant({
      geometry: '600x300^',
      gravity: 'center',
      crop: '600x300+0+0',
      'sampling-factor': '4:2:0',
      strip: true,
      quality: 85,
      interlace: 'JPEG',
      colorspace: 'sRGB'
  })

Thanks in advance for the clarification

Version: image_processing 1.12.1 (latest)

janko commented 3 years ago

Default sharpening was recently removed from the MiniMagick backend, see https://github.com/janko/image_processing/pull/67 and https://github.com/carrierwaveuploader/carrierwave/issues/2481 for more details. TL;DR: The sharpening parameters were making some thumbnails worse than the default version. I didn't manage to acquire enough knowledge to choose safer sharpening parameters, so I've decided to disable it.

To answer your questions:

  1. resize doesn't apply sharpening
  2. resize_* macros did apply sharpening, but not anymore
  3. sharpening is not applied by deafult

You can enable sharpening with resize_* macro by passing as the last argument sharpen: {}, or just adding sharpen: "0x1" or whatever sharpening parameters you prefer (0x1 was the default).

feliperaul commented 3 years ago

@janko Janko, would you know how I could sharpening when using a process resize_to_* macro with Carrierwave?