opendir(DIR,"./stand") or die ; mkdir stand_out; my @file = grep(/\.bmp/i,readdir(DIR)); closedir(DIR); local $| = 1; foreach my $file(@file){ open (IN, "./stand/$file") or die; open (OUT, ">./stand_out/$file"); binmode IN; binmode OUT; undef local $/; my $data = ; my $length = length($data); close (IN); my $head = unpack("H4",$data); next if $head ne "424d"; my $address = unpack("x10 H8",$data); $address =~ /([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])/; $address = hex("$4$3$2$1"); print "$file\n"; my $var = $address * 2 ; my $predata = unpack("H$var",$data); print OUT pack("H*",$predata); for ( my $i = $address ; $i < $length ; $i += 4 ){ my $rgba = unpack("x$i H8",$data) or last; $rgba =~ /([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f])([0-9a-f][0-9a-f])/; if (( $1 ne "000000" ) && ( $2 eq "00" )) { $rgba = "$1"."ff"; } print OUT pack("H*",$rgba); } close(OUT); }