es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La gema de procesamiento de imágenes crea un archivo redimensionado en GCS.

Tengo un objeto “Item” que tiene_many_attached :photos. Mi servicio de Active Storage es GCS. Creé un método de instancia “thumbnail()” para Item. Así:

def thumbnail(photo)
photo.variant(resize_and_pad: [400, 400, gravity: ‘center’, background: ‘#3D4453’])
end

Lo invocaba en el archivo show.html.erb de los elementos de esta manera:

<% @item.photos.each do |photo| %>
<%= image_tag(@item.thumbnail(photo)) %>
<% end %>

Sin embargo, esto provocaba que las fotos redimensionadas se subieran al cubo de GCS. Por tanto, acabé teniendo fotos de tamaño normal y fotos redimensionadas en el cubo. ¿Cómo puedo evitar esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para evitar que las fotos redimensionadas se carguen en su depósito de GCS, puede modificar su método thumbnail() para comprobar si la foto ya tiene una variante. Puede utilizar el método variant proporcionado por Active Storage para comprobar esto, y solo generar una nueva variante si aún no existe una. Aquí hay un ejemplo:

    def thumbnail(foto)
      foto.variant(resize_and_pad: [400, 400, gravity: 'center', background: '#3D4453']) ||
        foto # devolver el original si ya existe la variante
    end
    

    Con esta modificación, si ya existe una variante para una foto, se devolverá la foto original en su lugar. Esto significa que solo las fotos sin variantes se redimensionarán y cargarán en su depósito.

Comments are closed.