use Image::Magick; # delete old ----------------------------------------- opendir(DRC,".");@f_del = grep(/_phto\.jpg/i,readdir(DRC));closedir(DRC); foreach $f_del (@f_del) {print "\n[$f_del]\n";unlink($f_del);} print "delete";; # settei ------------------------- my $size_x = 800;$size_y = 800; my $size = $size_x . "x" .$size_y; my $size_2 = $size_x / 2; # begin shori ----------------------------------------- opendir(DRC,".");@f = grep(/\.jpg/i,readdir(DRC));closedir(DRC); foreach my $f (@f) { print "\n[$f]\n"; $f_ou_ph = $f; $f_ou_ph =~ s/\.jpg/_ou_phto.jpg/i; print "2[$f_ou_ph]\n"; my $img_ph = Image::Magick->new; $img_ph->Set(size=>"$size"); $img_ph->ReadImage('canvas:rgb(0, 0, 0)'); # ¹õ my $img = Image::Magick->new; $err = $img->Read($f); my $x = $img->Get('width'); my $y = $img->Get('height'); print "org_x,y[$x,$y]\n"; $resize_x = int($size_2 * 3 / 4); # $resize = "300x300"; $resize = $resize_x . "x" . $resize_x; $img->Resize(geometry => $resize,); my $x = $img->Get('width'); my $y = $img->Get('height'); print "resize_x,y[$x,$y]\n"; $img->Rotate(0); $x1 = $size_2 - ($x / 2) ;$y1 = $size_2 - ($x / 2) - $y;$img_ph->Composite(image=>$img, compose=>'over', x=> $x1,y=> $y1); $img->Rotate(90); $x1 = $size_2 + ($x / 2) ;$y1 = $size_2 - ($x / 2) ;$img_ph->Composite(image=>$img, compose=>'over', x=> $x1,y=> $y1); $img->Rotate(90); $x1 = $size_2 - ($x / 2) ;$y1 = $size_2 + ($x / 2) ;$img_ph->Composite(image=>$img, compose=>'over', x=> $x1,y=> $y1); $img->Rotate(90); $x1 = $size_2 - ($x / 2) - $y;$y1 = $size_2 - ($x / 2) ;$img_ph->Composite(image=>$img, compose=>'over', x=> $x1,y=> $y1); $err = $img_ph->Write("jpg:$f_ou_ph"); # ½ñ¤­½Ð¤· print "end[$f]";; } print "end";;