10 May
duccio

duccio il 10 May 2007 parla di Rails Snippet

RMagick e Thread

In uno dei nostri progetti abbiamo usato i Thread per eseguire in asincrono alcune operazioni che altrimenti bloccavano il rendering dell’html della pagina web. Tra le operazioni che venivano eseguite nel Thread c’era la necessità di eseguire un resize di una immagine, con il metodo che usiamo di solito per aprire un’immagine ed elaborarla dava errore:

    1 Magick::Image.read("#{RAILS_ROOT}/path_to_image/#{filename}")

Per risolvere il problema abbiamo penato un po’ perchè non si vedono gli errori generati nel Thread, comunque a parte questo la soluzione è questa:

    1 loaded_image = File.open("#{RAILS_ROOT}/public/path_to_image/#{filename}")
    2 img = Magick::Image.read(loaded_image)[0]
    3 img.resize!(100, 100)
    4 img.strip!
    5 img.format = "JPG"
    6 img.write("#{RAILS_ROOT}/public/path_to_image/#{filename}")

Praticamente a Magick::Image.read(loaded_image) si deve passare l’oggetto file piuttosto che non la path del file.

Scrivi un commento