2010-12-04 9 views
1

私はこれを理解するのに非常に苦労しています。以下は多くの問題を含む冗長な例ですが、うまくいけば、この初心者の試みを忘れて、誰かが私にこれを行う方法を教えてくれるでしょう。どのようにサイズを変更し、次にCGI :: ImageMagickでイメージタイプを変換しますか?

use LWP::Simple; 
use Image::Resize; 
use CGI::ImageMagick; 

sub convertandsave { 
    # This is my remote site where I am grabbing the image from 
    my $url = 'http://someremotedomain.example.com/'; 

    # Actually, the $image name is $_[0], but for this post I wanted to be clear 
    my $image = '6226701.bmp'; 

    # Displays full size 
    my $showimage = '<img src="$url/$image">'; 
    print qq~Full Size: $showimage <br />~; 

    # this is crude, but I absolutely know the last three chars are the image type 
    my $image  = lc '6226701.bmp'; 
    my $remoteimage = "$url/$image"; 
    my $imagetype = substr($image, -3, 3); 
    print qq~$imagetype<br />~; 

    # Save the full sized image locally 
    my $savelocal = LWP::Simple::getstore($imageurl, $image); 

    # Below are notes and attempts 
    # convert a.bmp a.jpg;???? 
    # if ($imagetype ne 'jpg'){ 
    #  my $cmd = "imgcvt -i $imagetype -o jpg $old.$cnt $new.$cnt"; 
    #  print $cmd."\n"; 
    #  if (system($cmd)) { print "imgcvt failed\n"; } 
    # } 

    my $thumb = $image; 
    my @thumb = split(/./, $thumb); 
    my $new = "$thumb[0].jpg"; 

    #my $gd = $image1->convert($image1, $new); 
    my $new = new CGI::ImageMagick(size => '120x100'); 
    my $thumb = new CGI::ImageMagick(convert => $image, $new); 

    #my $magick> convert rose.jpg rose.png; 
    #my $gd = $image1->convert(120, 120); 
    # This did work for resizing 
    my $thumbnail = Image::Resize->new($image); 
    my $gd = $thumbnail->resize(120, 120); 

    # open(FH, ">$thumbnail"); 
    # print FH $thumbnail->jpeg(); 
    # close(FH); 
    # Shows results of my continual failures 
    print qq~$image<br />~; 
    print qq~$new<br />~; 
    print qq~$thumb<br />~; 
    exit; 
} 

この質問で私が知りたいのは、イメージのサイズを変更し、JPEGに変換して保存する方法です。私が台無しにした他のすべてのものと私のばかげた試みを心配しないでください。私の試みが私の望む結果を明確にするのに役立つかもしれないと思った。

私がここにいるすべての助けに本当に感謝します。

+0

Iも試みシステム( "a.bmp a.jpg変換")。何もない。 CGI :: ImageMagick = HASH(0xd942990) "という結果が表示されます。誰か助けてくれますか? – DulcimerDude

答えて

3

CGI::ImageMagickあなたが想定しているように機能しません。あなたはその文書を理解していませんでした。 Image::Magickを適切に使用するか、またはImage::Resizeだけを使用するか、ready-made thumbnailing modulesのいずれか1つを使用します。以下の作業例を参照してください。

$savelocalという名前は不適切です。 getstoreは応答コードを返します。あなたはこの変数で何もしていません。エラーチェックを含める必要があります。

File::LibMagicを使用して、ローカルファイルのファイルタイプを判断します。間違った方法(ファイル名の拡張子)を取ると、より多くの労力とコード行が必要になります。これはまったく必要ではありません。 HTTP経由でイメージを取得するため、そのContent-Typeヘッダーを信頼してください。この例では、モジュールがイメージ形式の自動検出をサポートしているので、これをスキップします。

あなたがそう考えるものはありません。


# working on a local file 
use Image::Thumbnail; 
my $t = Image::Thumbnail->new(
    size  => 120, 
    input  => '6226701.bmp', 
    outputpath => '6226701-thumbnail.jpg', 
); 
$t->create or die "Could not create thumbnail - error: $t->{error} - warning: $t->{warning}\n"; 

# fetching an image, then working on it without explicitely saving it first locally 
use Image::Thumbnail; 
use LWP::UserAgent; 
my $image_name = '6226701.bmp'; 
my $response = LWP::UserAgent->new->get('http://someremotedomain.example.com/' . $image_name); 
die "Could not fetching image: $response->status_line\n" unless $response->is_success; 

my $t = Image::Thumbnail->new(
    size  => 120, 
    input  => \$response->decoded_content, # scalar ref = in-memory access 
    outputpath => "$image_name-thumbnail.jpg", 
); 
$t->create or die "Could not create thumbnail - error: $t->{error} - warning: $t->{warning}\n"; 
+0

ありがとう!私はあなたの助けを借りて働いています。画像に注釈を付けて使用していましたが、それを邪魔していました。 – DulcimerDude