문제

저는 Ubuntu에서 F-Spot을 사용하여 사진(JPEG 파일)을 회전한 후 FTP로 웹사이트에 올렸습니다.이것은 잘 작동하는 것 같았습니다.그러나 해당 이미지를 웹 브라우저에서 열면 회전된 것으로 표시되지 않습니다.Windows Vista 시스템에 다운로드하여 표준 프로그램으로 여는 경우에도 마찬가지입니다.나는 F-Spot이 실제로 이미지를 회전시키는 것이 아니라 EXIF ​​데이터 등을 수정하여 이미지를 회전시키는 것이 아닌가 의심합니다.

그래서 나는 웹 서버(즉, PHP 또는 Perl)에서 파일 경로 배열을 받아들이고, 이미지를 검사하고, 회전해야 하는 것을 회전시켜 원본 파일을 덮어쓰는 작은 기능을 원합니다.

나는 PHP를 조금 알고 있지만 Perl은 모릅니다.


이 질문이 이미 요청되었는지 검색하는 과정에서 몇 가지 아이디어를 발견했습니다.몇 번의 시행착오를 거쳐 glob(), EXIF_read_data() 및 imagerotate()를 사용하여 무언가를 함께 만들 수 있을 것입니다.내일 시도해 보겠습니다.하지만 이제 나는 자러 갈 것입니다.

도움이 되었습니까?

해결책

Perl에서는 당신이 원하는 것 같아요 "exiftool -방향".PHP에 상응하는 내용은 다음을 통해 액세스할 수 있는 것 같습니다. "exif_read_data".

다른 팁

PHP 웹사이트에서 직접 복사: http://us.php.net/manual/en/function.imagerotate.php

이 예제는 이미지를 180도 - 거꾸로 회전시킵니다.

<?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);
?>

이전 예를 사용하여 파일을 새 파일 이름으로 출력하려면 다음을 수행하십시오.

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

Perl에서는 다음을 사용하여 이미지를 회전할 수 있습니다. 이미지::마법 기준 치수.거기에 PHP 인터페이스 그리고 명령줄 인터페이스도 있습니다.몇 개의 이미지만 회전하는 경우 명령줄 버전을 사용하는 것이 가장 좋습니다.

다음은 이미지를 시계 방향으로 회전하고 파일 수정 시간을 보존하는 간단한 Perl 스크립트입니다.

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;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top