Question

je F-Spot sur Ubuntu pour faire pivoter des photos (fichiers JPEG) avant de les FTPed jusqu'à mon site. Cela semble fonctionner très bien. Toutefois, si ces images sont ouvertes dans un navigateur Web, ils ne montrent pas pivotée. Ni ils si je les télécharger sur un ordinateur Windows Vista et les ouvrir avec ANY programme standard. Je soupçonne que F-Spot tourne des images en modifiant les données exif ou similaire, non par rotation en fait les images.

Je veux une petite fonction qui sera exécutée sur mon serveur web (par exemple, PHP ou Perl) qui accepte un tableau de chemins de fichiers, examiner les images et faites pivoter ceux qui ont besoin d'être tourné, en écrasant le fichier original.

Je sais que certains PHP mais pas Perl.


Au cours de la recherche pour voir si cette question avait déjà été posée, je suis tombé sur quelques idées. Je pourrais peut-être, après quelques essais et erreurs, de frapper quelque chose ensemble en utilisant glob (), exif_read_data () et imagerotate (). Je vais essayer demain. Mais maintenant, je vais me coucher.

Était-ce utile?

La solution

En Perl, je pense que vous voulez "exiftool -Orientation" . L'équivalent PHP semble être accessible par "exif_read_data" .

Autres conseils

Copie directement depuis le site Web de PHP: http: //us.php .net / manuel / fr / function.imagerotate.php

  

Cet exemple tourne une image 180   degrés -. envers

<?php
// File and rotation
$filename = 'test.jpg';
$degrees = 180;

// Content type
header('Content-type: image/jpeg');

// Load
$source = imagecreatefromjpeg($filename);

// Rotate
$rotate = imagerotate($source, $degrees, 0);

// Output
imagejpeg($rotate);
?>

Pour la sortie du fichier à un nouveau nom, en utilisant l'exemple précédent:

// Output
imagejpeg($rotate, "new-" . $filename);
?>

En Perl, vous pouvez faire pivoter les images à l'aide des :: module de Magick. Il y a une interface PHP aussi, et une interface de ligne de commande (je pense) . Si vous êtes juste tourner quelques images que vous êtes probablement mieux avec la version ligne de commande.

Voici un simple script Perl pour faire pivoter les images dans le sens horaire (et préserve le temps de modification des fichiers):

use strict;
use warnings;
use Image::Magick;

die "no filename specified!\n" if not @ARGV;

foreach my $filename (@ARGV)
{
    print "Processing: $filename\n";

    # Get the file's last modified time for restoring later
    my $mtime = (stat $filename)[9];

    my $image = Image::Magick->new;
    my $result = $image->Read($filename);
    warn "$result" if $result;
    $result = $image->Rotate(degrees => 90.0);
    warn "$result" if $result;
    $result = $image->Write($filename);
    warn "$result" if $result;

    # Restore the mtime
    utime time, $mtime, $filename;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top