Forum: Rails France Recherche tuto sur l'upload de fichier

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Pylos M. (Guest)
on 2007-04-25 17:18
Bonjour,

quelqu'un aurais un petit tutoriels sur l'upload d'image et de sa
manipulation dans un contrôleur.

je veux dire depuis le tag "file_field" et puis comment récuperer les
infos:

le lieux où se trouve l'image, sa taille, ses dimension etc...

d'avance merci.

MaitrePylos
Zambra (Guest)
on 2007-04-25 17:45
(Received via mailing list)
> quelqu'un aurais un petit tutoriels sur l'upload d'image et de sa
> manipulation dans un contrôleur.
>
> je veux dire depuis le tag "file_field" et puis comment récuperer les
> infos:
>
> le lieux où se trouve l'image, sa taille, ses dimension etc...
>
> d'avance merci.

Salut,

voici quelques liens glanés il y a quelques temps déjà, le plus simple
étant d'utiliser le plugin attachment_fu à mon avis :

http://clarkware.com/cgi/blosxom/2007/02/24#FileUploadFu
http://www.myersds.com/notebook/2006/07/25/basic_f...
http://www.ruby-forum.com/topic/80427#new
http://www.ruby-forum.com/topic/74675#new
Aurélien Bottazini (Guest)
on 2007-04-26 00:19
(Received via mailing list)
Bonjour,

Quelques pistes...

Pour l'upload de fichier cela dépend si tu veux enregistrer dans la
base ou sur le serveur.

Voilà un exemple tout simple d'une de mes applis (requiert la
librairie "ftools" de ruby si mes souvenirs sont bon) pour enregistrer
sur le serveur:

#vérifie si le repertoire d'enregistrement existe sinon on le
créeif not File.exists? @path
      FileUtils.mkdir_p @path
end

#enregistrement du fichier a proprement parlé
File.open("#{@path}#{@filename}", "wb") do |f|
      f.write(params['file_to_save'].read)
 end

Pour la manipulation d'image je pense que l'api de référence est Rmagick

Voilà un petit exemple que j'ai codé (redimensionne une image si elle
est plus grande que la largeur ou/et hauteur maximale spécifiée):

img = Magick::Image.read("#{@path}#{@filename}")
img[0].change_geometry!("#{@image_width}x#{@image_height}") { |cols,
rows, image|
             image.resize!(cols, rows)
}
img[0].write("#{@path}#{@filename}")


je te conseille également de regarder le plugin responds_to_parent
pour l'upload de fichier. Cela permet de faire de "l'upload a la
Google". C'est à dire de passer par une frame et de ne pas changer de
page lors de l'upload du fichier (comportement que l'on recherche dans
certains cas)

Aurélien
Pylos M. (Guest)
on 2007-04-26 11:20
>
> Voilà un petit exemple que j'ai codé (redimensionne une image si elle
> est plus grande que la largeur ou/et hauteur maximale spécifiée):
>
> img = Magick::Image.read("#{@path}#{@filename}")
> img[0].change_geometry!("#{@image_width}x#{@image_height}") { |cols,
> rows, image|
>              image.resize!(cols, rows)
> }
> img[0].write("#{@path}#{@filename}")

>
> Aurélien

Merci de votre aide.

Je pensais bien, à Rmagick, l'ensemble des références me seront bien utile.

Par contre savez-vous quel est la commande qui donne la dimension de
l'image.

Parce que si je comprend bien le code ci-dessus, cela met à une dimension
définie, mais cela ne respecte pas les proportions, ce qui risque de
déformer l'image.

est-ce que img[0].widht me donneras une taille ?

Merci de votre aide.
Aurélien Bottazini (Guest)
on 2007-04-26 11:59
(Received via mailing list)
Le code que je t'ai donné redimensionne bien l'image en respectant les
dimensions.
En fait c'est change_geometry qui s'en charge, il faut voir les deux
arguments qui lui sont passés comme
des contraintes de taille.
Plus d'info ici:
http://www.simplesystems.org/RMagick/doc/image1.ht...

Pour connaître la taille de l'image il faut plutot analyser ce que
contiens
img[2] je pense
http://www.simplesystems.org/RMagick/doc/image1.ht... plus
d'info.
Pylos M. (Guest)
on 2007-04-26 12:15
Super, merci pour toutes les infos.

Je pense que je vais pouvoir atteindre mon objectif.

En tous cas je suis impressionné par RMagick et tout ce dont il est
capable de faire.

Encore merci.
Pylos M. (Guest)
on 2007-05-03 13:54
Grrrrrr j'ai vraiment un peu de mal.

Bon voila.

je veux modifier une image qu'un utilisateur upload sur mon serveur,
dont je ne connais pas la taille, mais cette image ne peut être
supérieur à 100x100 pixels.

donc le principe est simple, si un utilisateur upload une image qui fais
200x800 par exemple je dois faire

if width > 100

diviseur = widht /100 #ce qui donne 2

hauteur = widht / diviseur
largeur = height /diviseur

img[0].change_geometry!("#{hauteur}x#{largeur}") { |cols,rows, image|
    image.resize!(cols, rows)
 }
end

ce qui donneras un image de 100X400

puis je recommence

if height > 100

....


mon problème est que je ne sais pas récupérer la valeur de widht et de
height de l'image envoyer par l'utilisateur.

J'utilise Rmagick.

Merci de votre aide

MaitrePylos
Titou T. (Guest)
on 2007-05-10 14:18
Pour obtenir les dimensions de l'image de base, tu as columns pour la
largeur, et rows pour la hauteur (en pixels tout ça)...


http://www.simplesystems.org/RMagick/doc/imageattr...
http://www.simplesystems.org/RMagick/doc/imageattr...

Certes, les noms ne sont pas forcément bien choisis, mais c'est censé
marcher ;)
Pylos M. (Guest)
on 2007-05-14 11:09
Merci :)
This topic is locked and can not be replied to.