IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby on Rails Discussion :

Image Magick facile ? (2)


Sujet :

Ruby on Rails

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 107
    Points : 92
    Points
    92
    Par défaut Image Magick facile ? (2)


    dans cette méthode je lis une image
    que je transforme en format 60x60, puis en 120x120
    et finalement en plus je la sauvegarde dans un autre repertoire

    En rouge c'est ce qu'ai rajouté pour avoir une trace
    ou pour changer la façon de procéder
    mais rien n'y fait



    def valid60x60

    puts ">>>>>>>>>>>>valid60x60 begin begin begin <<<<<<<<<<<"
    require 'rubygems'
    require 'RMagick'
    # include Magick

    # il faut récupérer le fileName !!!!!!!!!!!!!!!!!!!!!!!!!
    # et en 2 parties
    @mode = "U"
    iid = params[:id]
    source = params[:s]
    puts ">>>>>>>>>>>>>>ON EST LA <<<<<<<<<<<<<<<<<<<<<" + source

    @expo = Expo.find(iid)

    input = File.join("public", "images", source)
    input.downcase
    puts input

    dir = File.join("public", "images") # pas toucher
    targ = File.join(dir, @expo.auth)

    typsrc =@expo.typsrc
    typsrc.downcase

    if typsrc == "jpg"
    typf = "jpg"
    else
    typf = "png"
    end
    fout = @expo.file + "." + typf

    dim1 = "#{60}x#{60}"
    dim2 = "#{120}x#{120}"
    dim3 = "#{960}x#{960}"

    # FORMAT 60

    model = Magick::Image::read(input)[0]
    photo = model
    photo.change_geometry!(dim1){|cols, rows| model.thumbnail! cols, rows}

    output = File.join(targ, "ima60", fout)
    puts "copying to " + output + " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" photo.write(output)
    rescue
    puts "Caught exception: #{$!}"

    jusque là tout marche très bien
    et je retrouve bien mon image en format 60x60
    là où j'attends qu'elle soit



    photo.remove
    GC.start



    Ensuite plus rien ne marche
    pas de message
    pas de plantage
    et je me retrouve sur mon panel valid60x60.html.erb
    voir à la fin de la méthode



    # FORMAT 120

    photo = model

    photo.change_geometry!(dim2){|cols, rows| model.thumbnail! cols, rows}

    output = File.join(targ, "ima120", fout)
    puts "copying to " + output + " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
    photo.write(output)
    rescue
    puts "Caught exception: #{$!}"
    photo.remove# under otor


    # FORMAT big


    photo = model


    photo.change_geometry!(dim3){|cols, rows| model.thumbnail! cols, rows}

    output = File.join(targ, fout)
    puts "copying to " + output + " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
    photo.write(output)
    rescue
    puts "Caught exception: #{$!}"


    # sauvegarde SOURCE big/otor

    photo = model
    targbig = File.join(dir, "big", @expo.auth)
    finp = @expo.file + "." + typsrc
    finp.downcase

    output = File.join(targbig, finp)
    puts "copying to " + output + " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
    photo.write(output)
    rescue
    puts "Caught exception: #{$!}"


    redirect_to :controller => "validate"
    end


    Quelqu'un aurait-il la bonté
    d'avoir une bonne idée ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 107
    Points : 92
    Points
    92
    Par défaut rescue ?

    bon j'ai bricolé les rescue pour écrire à la place
    photo.write(output) rescue puts "Caught exception: #{$!}"
    sur la même ligne

    ensuite j'ai eu une erreur sur
    photo.remove
    que j'ai mis en commentaire

    puis tout marche


    noter que précedemment j'avais écris des choses comme
    photo.change_geometry!(dim1){|cols, rows| model.thumbnail! cols, rows}
    (qui marche quand même)
    alors qu'il fallait lire
    photo.change_geometry!(dim1){|cols, rows| photo.thumbnail! cols, rows}

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 107
    Points : 92
    Points
    92
    Par défaut Image Magick facile ? (2)
    Finalement les images "resized" ne sont pas bonnes
    je perds de la définition et je n'en comprends pas encore très bien toute la mécanique.

    J'ai changé de technique en resizant du grand au plus petit
    et en modifiant le change_geometry

    maintenant les résultats sont strictement conforme à mes voeux
    le format initial de l'image est respecté lors des resize ainsi que la définition


    voici ce que celà donne au niveau code,



    def valid60x60

    require 'rubygems'
    require 'RMagick'
    # include Magick

    # il faut récupérer le fileName !!!!!!!!!!!!!!!!!!!!!!!!!
    # et en 2 parties
    @mode = "U"
    iid = params[:id]
    source = params[:s]

    @expo = Expo.find(iid)

    input = File.join("public", "images", source)
    input.downcase
    puts input

    dir = File.join("public", "images") # pas toucher
    targ = File.join(dir, @expo.auth)

    typsrc =@expo.typsrc
    typsrc.downcase

    if typsrc == "jpg"
    typf = "jpg"
    else
    typf = "png"
    end
    fout = @expo.file + "." + typf


    # je travaille de la plus grande taille d'image vers la + petite
    # car j'ai l'impression qu'il y a des "effets de bord"


    # >>> file SOURCE under big/otor avec "scale"

    targbig = File.join(dir, "big", @expo.auth)
    finp = @expo.file + "." + typsrc
    finp.downcase
    output = File.join(targbig, finp)
    puts "copying to " + output + " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"

    GC.start
    # lecture image
    model = Magick::Image::read(input)[0] # 3000x4000 HD

    # scale factor 0.5 makes a new image 50% of the size of the receiver
    # remarquez que je travaille ici depuis "model" et non pas une copie

    model.scale!(1)
    model.write(output) rescue puts "Caught exception: #{$!}"


    # >>> under otor au format max 960x960
    # >>> scale pas good, je préfère change_geometry

    output = File.join(targ, fout)
    puts "copying to " + output + " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"

    GC.start
    photo = model # est-ce vraiment utile ?
    dim3 = "#{960}x#{960}"

    photo.change_geometry(dim3){|cols, rows, photo | photo.resize!(cols, rows)}
    photo.write(output) rescue puts "Caught exception: #{$!}"


    # >>> otor/images12 120x120

    output = File.join(targ, "images12", fout)
    puts "copying to " + output + " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"

    GC.start
    photo = model
    dim2 = "#{120}x#{120}"

    photo.change_geometry(dim2){|cols, rows, photo | photo.resize!(cols, rows)}
    photo.write(output) rescue puts "Caught exception: #{$!}"



    # >>> otor/images06 60x60

    output = File.join(targ, "images06", fout)
    puts "copying to " + output + " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"

    GC.start
    photo = model
    dim1 = "#{60}x#{60}"

    photo.change_geometry(dim1){|cols, rows, photo | photo.resize!(cols, rows)}
    photo.write(output) rescue puts "Caught exception: #{$!}"

    GC.start

    # il faudra ensuite modifier la Table : state et typf

    redirect_to :controller => "validate"
    end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Documentation image magick
    Par rigolman dans le forum Bibliothèques et frameworks
    Réponses: 17
    Dernier message: 18/06/2009, 11h30
  2. Image Magick facile ?
    Par duboisa dans le forum Ruby on Rails
    Réponses: 7
    Dernier message: 25/12/2008, 21h57
  3. Utilisation de Image::Magick
    Par LE NEINDRE dans le forum Modules
    Réponses: 2
    Dernier message: 18/05/2006, 15h13
  4. Problème XML::Simple & image::Magick
    Par rori dans le forum Modules
    Réponses: 5
    Dernier message: 17/05/2006, 17h02
  5. [Image] Gif animé avec image magick
    Par rigolman dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 20/10/2005, 17h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo