Comments (2)
This was the one thing keeping me from migrating away from Paperclip to ActiveStorage.
Being not familiar with the code and abstraction layers of ActiveStorage, libvips and image_processing I found it very hard and time consuming to implement this simple feature. However, here is a solution for anyone who comes across this:
Create this file:
# lib/image_processing/vips/processing.rb
require "image_processing"
module ImageProcessing
module Vips
module Processing
extend ActiveSupport::Concern
included do
def crop_whitespace
coordinates = image.find_trim(threshold: 7, background: 0)
image.crop(*coordinates)
end
end
end
end
end
Load it from an initializer:
# config/initializers/image_processing.rb
Rails.configuration.after_initialize do
ImageProcessing::Vips::Processor.include(ImageProcessing::Vips::Processing)
end
And finally, this is how you use in your model with ActiveStorage named variants (Rails 7 required):
has_one_attached :logo do |blob|
blob.variant :small, crop_whitespace: true, resize_to_fit: [110, 55], saver: { quality: 82 }
end
If the maintainers feel this should become part of the gem's functionality, let me know if I should create a pull request.
from image_processing.
AFAIK, Active Storage doesn't currently support registering custom processing operations like this one, which is one if its limitations. It's not a limitation of ImageProcessing, because it allows you to do custom processing:
ImageProcessing::Vips.source(...)
.custom do |image|
coordinates = image.find_trim(threshold: 7, background: 0)
image.crop(*coordinates)
end
# ...
from image_processing.
Related Issues (20)
- remote shell execution in v1.12.2 HOT 1
- Can we watermark pdfs without splitting into images? HOT 1
- Translating modulate function from ImageMagick to Libvips. HOT 2
- Why depend on both vips and mini_magick? HOT 10
- rotate leaves a black line on edge of image HOT 2
- Block unfuzzed loaders with libvips 8.13+ HOT 18
- Adding white background while converting from `png` to `jpg` with `resize_and_pad!` fails with linear issue HOT 4
- Custom ImageMagick Command HOT 2
- Default appears to be ruby-vips rather than mini_magick - Rails 7, Ruby 3 HOT 2
- Size of watermark (Vips) HOT 1
- When converting PDFs, the order of arguments matters? HOT 1
- Please disable default image sharpening in the VIPS backend HOT 2
- Doc: ImageMagick `loader`, unclear how to specify input and output files! HOT 2
- No append on ImageProcessing::Vips HOT 4
- WARNING: The convert command is deprecated in IMv7, use "magick" HOT 2
- Support mini_magick 5.0.0 HOT 1
- How can I adjust individual levels using ::Vips? HOT 5
- VipsForeignLoad: "/tmp/ActiveStorage-28657-20220112-4-8e2faa.jpg" is not a known file format HOT 19
- Different error message in tests HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from image_processing.