Image::Magick, 2 файла сохранить

Модератор: Модераторы разделов

Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

Image::Magick, 2 файла сохранить

Сообщение gcc »

Принимаются функцей param() данные и файл, нужно сохранить один файл в раширении 150 на 150, другой 75 на 75


первый файл записыаеться нормально, а другой файл записываеться пустой!! !!

права 777, права у веб сервера на всё!

вот скрипт, менял его много раз, подскажите где ошибка пожалуйста! аномалия какая-то

Код:

$photo=$query->param("photo"); $photot=$query->param("photo"); sub up1 { if ($photo) { my ($avatar, $downpath, $name, $a, $downpath, $ix, $iy, $file, $ox, $oy, $oc, $ic, $nx, $ny, $geo); my $avatar="0000"; my $downpath = "/site/p/"; #my $in=param('picture'); # �?�?�?�?�?�?�?�? �?�?�? �?�?�?�?�? �?�? ���?�?�?�?�?�?�?�? my ($name)=$photo =~ m#([^\\/:]+)$#; my $a="jpg"; my $file = $downpath.$avatar.$tv.".".$a; #$open(OUT,">$file") || die "$!"; #binmode(OUT); # �?�?�?�?�?�? �?�?�?�?�?�?�? ���?�?�?�? �? ���?�?�?�? �? �?�?�?�? # open (IMG, ">$file") || die $!; # binmode IMG || die $!; # # while { # print IMG (<$photo>); # # } #$file = $path_image.$tv[1].".".$tv[0]; open (IMG, ">$file"); binmode IMG; print IMG while (<$photo>); close (IMG); chmod 0644, $file; $ix="150"; $iy="150"; $photo = Image::Magick->new; $photo->Read("$file"); # $file - ���?�?�?�?�?�? �?�?�? �?�?�? �?�?�?�?�?�? �?�?�? �?�?���?�?�?�?�?�?�?�? �?�?�?�? my ($ox, $oy, $oc, $ic, $nx, $ny, $geo); ($ox,$oy)=$photo->Get('columns','height'); if (($ox > $ix)||($oy > $iy)) { $oc = $ox/$oy; $ic = $ix/$iy; if ($oc < $ic) {$ny = $iy; $nx=int(($ox/$oy)*$iy);} elsif ($oc > $ic) {$nx = $ix; $ny=int(($oy/$ox)*$ix);} else {$nx = $ix; $ny = $iy;}} else {$nx=$ox;$ny=$oy;} #�?�?�?�?�?�?�?�? �?�?�?�?�?�? �? �?�?�?�?�?�?�?�?�? �?�?�?�?�?�?�?�?�?�?�?: $geo = 'geometry'; $photo->Resize(geometry=>$geo, width=>$nx, height=>$ny); #$file = $path_image."i".$tv[1].".".$tv[0]; $photo -> Write("$file"); #while (<$photo>) { # print OUT ; #} #close(OUT); # �?�?�?�?�?�?�? �?�?�?���?�?�? �? �?�?�?�?�?�?�? �?�?�?�?�? <$name> print "Upload file: $name"; } } sub up2 { #avator my ($avatar, $downpath, $name, $a, $downpath, $ix, $iy, $file, $ox, $oy, $oc, $ic, $nx, $ny, $geo, $a); $avatar="000"; $downpath = "/s/t/"; #my $in=param('picture'); # �?�?�?�?�?�?�?�? �?�?�? �?�?�?�?�? �?�? ���?�?�?�?�?�?�?�? ($name)=$photot =~ m#([^\\/:]+)$#; $a="jpg"; $file = $downpath.$avatar.$tv.".".$a; #$open(OUT,">$file") || die "$!"; #binmode(OUT); # �?�?�?�?�?�? �?�?�?�?�?�?�? ���?�?�?�? �? ���?�?�?�? �? �?�?�?�? # open (IMG, ">$file") || die $!; # binmode IMG || die $!; # # while { # print IMG (<$photo>); # # } #$file = $path_image.$tv[1].".".$tv[0]; open (IMG2, ">$file"); binmode IMG2; print IMG2 while (<$photot>); close (IMG2); chmod 0644, $file; $ix="75"; $iy="75"; $photot = Image::Magick->new; $photot->Read("$file"); # $file - ���?�?�?�?�?�? �?�?�? �?�?�? �?�?�?�?�?�? �?�?�? �?�?���?�?�?�?�?�?�?�? �?�?�?�? my ($ox, $oy, $oc, $ic, $nx, $ny, $geo); ($ox,$oy)=$photot->Get('columns','height'); if (($ox > $ix)||($oy > $iy)) { $oc = $ox/$oy; $ic = $ix/$iy; if ($oc < $ic) {$ny = $iy; $nx=int(($ox/$oy)*$iy);} elsif ($oc > $ic) {$nx = $ix; $ny=int(($oy/$ox)*$ix);} else {$nx = $ix; $ny = $iy;}} else {$nx=$ox;$ny=$oy;} #�?�?�?�?�?�?�?�? �?�?�?�?�?�? �? �?�?�?�?�?�?�?�?�? �?�?�?�?�?�?�?�?�?�?�?: $geo = 'geometry'; $photot->Resize(geometry=>$geo, width=>$nx, height=>$ny); #$file = $path_image."i".$tv[1].".".$tv[0]; $photot -> Write("$file"); #while (<$photo>) { # print OUT ; #} #close(OUT); # �?�?�?�?�?�?�? �?�?�?���?�?�? �? �?�?�?�?�?�?�? �?�?�?�?�? <$name> print "Upload file: $name"; } up1(); up2(); exit;




!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
сделал!! уже

$photo = Image::Magick->new;

иеняем на

my $photo = Image::Magick->new;
Спасибо сказали: