Out of the box, Active Storage supports a number of transformations, through the image_processing gem. This gem provides a common interface to both MiniMagick (the old standard) and ruby-vips (the new default).
I recently needed the ability to lighten images uploaded via Active Storage (for use as watermarks), but there...
<% if @document.watermark.attached? %>
<%= image_tag @document.watermark.variant({ resize_to_limit: [1_000, 1_000], lighten: 0.5 }) %>
<% end %>