2010-10-30 3 views
0

J'ai créé un petit morceau de code pour télécharger un fichier et le redimensionner avec imagemagik. J'utilise la fonction system ("command") pour appeler imagemagik pour redimensionner l'image, mais la sortie est un fichier de taille 0 octets. une idée de ce qui pourrait aller mal?rails, transfert d'image et redimensionnement avec imagemagik

Répondre

2

Je suggère d'utiliser RMagick, qui est une enveloppe de rubis autour de imagemagick. Cela aidera à garder les choses plus rubis, et est généralement utile à savoir.

Google aide (ou Stackoverflow pour RMagick), mais les étapes sont quelque chose comme (je suppose Rails 3):

dans application.config:

gem 'rmagick' 

Ensuite, dans votre contrôleur :

require 'RMagick' 

def create 
    @upload_io = params[:image_field] 
    @filename = @upload_io.original_filename 
    @filepath = Rails.root.join('public', 'images', @filename) 
    File.open(@filepath) do |file| 
    file.write(image_io.read) 
    end 

    @original = Magick::Image.read(@filepath) 

    @thumbnail = @original.resize_to_fit 75 75 
    @thumbnail.write(Rails.root.join('public', 'images', 'sm_' + filename) 
end 

Si vous n'êtes pas tellement envie RMagick, je suggère également faire en sorte que vous enregistrez votre fichier avant de le redimensionner (ne l'exist original?), et assurez-vous que vos chemins sont cohérente et que vous êtes en train de frapper au bon endroit sur le système de fichiers.

+0

hi ... j'ai regardé l'option rmagick, mais je l'ai votée puisqu'elle dit qu'elle n'est plus maintenue ... – Amit

+0

Aussi en ce qui concerne les chemins de fichiers, je suis sûr que les chemins sont corrects, car il y a un nouveau fichier de taille 0 octets, donc je suis assez sûr que la commande est en cours d'exécution sur le bon fichier. Mon doute est que c'est l'utilisateur de rails instance qui cause des problèmes, mais même après avoir fait le dossier à 777, je reçois toujours la même erreur – Amit

+0

Je l'utilise avec beaucoup de succès. Je ne savais pas qu'il n'était pas entretenu, mais il est très fonctionnel tel quel. Je dirais toujours aller avec RMagick, et puis descendre à commander seulement si nécessaire. Mais, à vous :-) – Travis

Questions connexes