Jp2 batch converter
From OpenSimulator
(Difference between revisions)
m (→Code) |
m (→Usage) |
||
| Line 13: | Line 13: | ||
* Make sure that the binaries image_to_j2k and j2k_to_image can be executed from anywhere | * Make sure that the binaries image_to_j2k and j2k_to_image can be executed from anywhere | ||
| − | * Put the code in a file named jp2batch.pl, and copy it to the directory where your jpg | + | * Put the code in a file named jp2batch.pl, and copy it to the root-directory where your jpg-wannabe-textures are. Call the script: |
| − | perl | + | perl jp2batch.pl |
| − | + | ||
==Code== | ==Code== | ||
Revision as of 04:33, 21 February 2008
Description
The jp2 files used by the Secondlife client, are actually j2k files. These can be encoded by image_to_j2k from openjpeg. The script checks for available tif-files in a root directory, and compresses those to j2k and renames them...
Usage
- Install OpenJPEG svn (if you have trouble compiling, you could try the binaries on their site)
svn co http://www.openjpeg.org/svn/trunk cd trunk mkdir bin cd bin cmake .. -DBUILD_EXAMPLES:BOOL=ON make make install
- Make sure that the binaries image_to_j2k and j2k_to_image can be executed from anywhere
- Put the code in a file named jp2batch.pl, and copy it to the root-directory where your jpg-wannabe-textures are. Call the script:
perl jp2batch.pl
Code
#!/usr/bin/perl -s -U
# jp2batch.pl by Phrearch
use Cwd;
$dirs=1;
$files=0;
sub ScanDirectory{
my ($workdir) = shift;
my ($startdir) = &cwd; # keep track of where we began
chdir($workdir) or die "Unable to enter dir $workdir:$!\n";
opendir(DIR, ".") or die "Unable to open $workdir:$!\n";
my @names = readdir(DIR) or die "Unable to read $workdir:$!\n";
closedir(DIR);
foreach my $name (@names){
next if ($name eq ".");
next if ($name eq "..");
if (-d $name){
$dirs++;
&ScanDirectory($name);
next;
}
if (substr($name, -4) eq ".jpg") {
print "Processing $workdir\\$name...";
$rawname = substr $name, 0, -4;
system("convert -format tga $rawname.jpg $rawname.tga &>/dev/null");
system("rm $name &>/dev/null");
system("image_to_j2k -i $rawname.tga -o $rawname.j2k -r 20,10,1 &>/dev/null");
system("mv $rawname.j2k $rawname.jp2 &>/dev/null");
system("rm $rawname.tga &>/dev/null");
print "done!\n";
$files++;
}
chdir($startdir) or
die "Unable to change to dir $startdir:$!\n";
}
}
&ScanDirectory(".");
print "\nDirectories scanned:$dirs\nFiles processed:$files\n";