¿Cómo solicito una sombra a miniaturas con ImageMagick y un clip?
-
19-09-2019 - |
Pregunta
Me gustaría alterar el procesamiento de imágenes en miniatura en un clip por tener ImageMagick aplica una sombra a todas las miniaturas. Lo que estoy atascado en el comando es ImageMagick real que se retiraría este pequeño milagro fuera. Todo lo que he intentado devuelve una gota de sombra incorrectamente escalados sin la imagen original.
def transformation_command
scale, crop = @current_geometry.transformation_to(@target_geometry, crop?)
trans = ""
trans << " -resize \"#{scale}\""
trans << " -crop \"#{crop}\" +repage" if crop
# Apply Drop Shadow
trans << " #{convert_options}" if convert_options?
trans
end
Una He intentado ...
def transformation_command
scale, crop = @current_geometry.transformation_to(@target_geometry, crop?)
trans = ""
trans << " -resize \"#{scale}\""
trans << " -crop \"#{crop}\" +repage" if crop
trans << " \( +clone -background black -shadow 60x5+10+10 \) +swap -background none -layers merge +repage"
trans << " #{convert_options}" if convert_options?
trans
end
Estoy completamente nuevo para ImageMagick, cualquier ayuda sería muy apreciada.
Solución
Después de un poco de ensayo y error y enterrar la cabeza en la documentación, que finalmente lo descubrió.
has_attached_file :image,
:styles => { :thumb => ["100x100#", :png] },
:convert_options => { :thumb => '\( +clone -background black -shadow 70x4+0+0 \) +swap -background none -layers merge +repage' }
- Asegúrate de que tienes la última versión de ImageMagick instalado.
- [ "100x100 #", png]. Serán convertir la imagen a PNG por lo que la sombra es transparente
- En Opciones de convertir,: el pulgar sólo se aplicará la conversión al: Estilo general, utilice:. Todo para aplicar la conversión a todos sus estilos
- Tweak "70x4 + 0 + 0" para conseguir la sombra que desee.
Otros consejos
Me resulta mucho más fácil usar la interfaz RMagick en lugar de enviar las opciones de línea de comandos para Imagemagick sí mismo.
Si utiliza RMagick puede utilizar el método de la sombra.
img = Image.read('slide.png').first
shadow = img.shadow(0, 0, 0.0, '20%')
y luego compuesta la imagen sobre la sombra.
escribí un artículo sobre el uso RMagick: http://schf.uc.org/articles/2006/10/18/render-greatlooking-collages-with-ruby-and-rmagick
Trate de leer por encima de lo que podría darle una mejor comprensión.
También escribí un lib abstracción para RMagick que intenta hacer que sea aún más fácil de usar. Lo he llamado RubyShop porque trató de imitar la composición a base de capas de Photoshop .. (me gusta el nombre y probablemente cambiarlo si alguna vez resucitar el proyecto)