#! /usr/bin/perl -w
use strict;
use Image::Size;
#változók:
#@all fileneveket tárolja listában, ha jpg-k
#$fn filename
#$kit kiterjesztés
#$cs számláló az egyenlőségjelek kiiratásához
#$meret az új file mérete(string)
#$c_x célfile X mérete(szélessége)
#$c_y célfile Y mérete(magassága)
#$orig_size string - az eredeti kép mérete: 1234x1234
#$f_x forrásfile X mérete
#$f_y forrásfile Y mérete
#$arany forrásfile szélesség-magasság aránya
#$i változó az foreach ciklushoz, ami mindig a @all sorait veszi fel
#$l változó, amit csak az [enter]-ek leütésére használtam (tovább...)
#$ff forrásfile neve (név.kit)
#$cf célfile neve (név.kit)
#$s számláló az elejéhez, az egyenlőségjelek kiiratásához, valamint a file lista elkészítéséhez
#@ft filetype (png, jpg, jpeg, JPG, bmp)
#@other (egyenként a filetípusok cuccai)
#===============================HELP FILE kiiratása
my $s=0;
system("clear");
print '=' x 80, "\n";
open FH,"help";
print <FH>;
close FH;
print '=' x 80, "\n";
print "[enter] => tovább";
my $l=<STDIN>;
system("clear");
#===============================Lista elkészítése
$s=0;
my @ft=("jpg","JPG","jpeg","bmp","gif","psd","pcd");
my @all = `ls | grep png`;
#my @others=();
foreach $s(@ft){
my @other = `ls | grep $s`;
push(@all,@other)
}
#===============================ha nincs kép a könyvtárba, akkor meg is áll
chomp(@all);
if (!@all) {
print "nincs semmi sem a könyvtárban!!!\n";
exit;
}
#===============================deklaráció, szélesség bekérése
my ($fn,$kit,$meret,$ff,$cf,$orig_size,) = ("","","","","","");
my ($f_x,$f_y,$arany,$c_y,$i,$cs) = (0,0,0,0,0,0);
print '=' x 80, "\n";
print "kérem a célfile szélességét pixel-ben ([enter] - 400px): ";
my $c_x=<STDIN>;
print '=' x 80, "\n";
#===============================ha a $c_x üres, akkor 400-ra állítja az értékét(default)
chomp($c_x);
$c_x=(!$c_x)?400:$c_x;
#===============================FORMÁZOTT LISTA KÉSZÍTÉSE
print "a következő fileok lesznek konvertálva:\n";
print '=' x 80, "\n";
format STDOUT_TOP =
file-név tipus méret konvertált méret
------------------------------------------------------------------
.
format STDOUT =
@<<<<<<<<<<<<<<<<<< @|||||||||| @<<<<<<<<<<<<<<<< @<<<<<<<<<<<<
$fn, $kit, $orig_size, $meret
.
#===============================KIIRATÁS A FORMÁZOTT LISTÁBA
foreach $i(@all) {
($fn,$kit) = split(/\./,$i);
$ff = $fn.".".$kit;
$cf = $fn."_".$c_x."x".$c_y.".".$kit;
($f_x, $f_y) = imgsize($ff);
$orig_size = $f_x."x".$f_y;
$arany = $f_x/$f_y;
$c_y = int($c_x/$arany);
$meret = $c_x."x".$c_y;
write;
}
#===============================ha a listával nincs gond, akkor vár egy billentyűlenyomásra
print '=' x 80, "\n";
print "[enter] => tovább";
$l=<STDIN>;
#===============================tényleges konvertálás
print '=' x 80, "\n";
$i=0;
foreach $i(@all) {
($fn,$kit) = split(/\./,$i);
$ff = $fn.".".$kit;
$cf = $fn."_".$c_x."x".$c_y.".".$kit;
#el kell dönteni, hogy hány tabulátor kell
if ($ff =~ /.{,7}/) {print "\t".$ff."\t\t\t"."=>"."\t".$cf."\n";} elsif ($ff =~ /.{22,}/){
print "\t".$ff."\t"."=>"."\t".$cf."\n";
} else {
print "\t".$ff."\t\t"."=>"."\t".$cf."\n";
}
system("convert -geometry \'".$c_x."x".$c_y.">\' ".$ff." ".$cf);
}
#===============================VÉGE
print '=' x 80, "\n";
print "kész....[enter]=>vége";
$l=<STDIN>;
ennyi. nem is bonyolult:D
források:
image::size modul
a forrás és a modul csomagolva
kritikát(+/-), hozzászólást szivesen fogadok.:D
- demogun blogja
- A hozzászóláshoz be kell jelentkezni
- 849 megtekintés
Hozzászólások
Nekem ezt javasoltak:
http://michael.hahsler.net/pix2tn/
Csak imagemagick kell neki.
A scriptet meg azon belul a html kodot egyszeruen at lehet alakitani, hogy milyen szineket, elrendezest, thumbnail-meretet, formatumokat stb. hasznaljon.
A fentivel ellentetben a parametereket nem lehet opciokent megadni, de az nalam nem is fontos (dvd-re kiirt kepekhez generalok vele katalogust).
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
oké, köszi, meglesz
- A hozzászóláshoz be kell jelentkezni
Haaat... Ha a kollegak ilyen kodot irnanak darabokra szednem oket, kulonosen a backtick-es kulso programok miatt :) Ezt amugy hol tanitjak: 'foreach $cs(1..80){print "=";} print "\n";' ??? Kicsit tomorebb verzio: print '=' x 80, "\n";
- A hozzászóláshoz be kell jelentkezni
hat lehet, de en nem vagyok olyan szinten, mint a kollegaid. ezert tanulom meg csak most...
abba meg hogy hol tanitjak inkabb ne menjunk bele, a tanacsod minden esetre koszonom:)
szerk: javítottam is:)
- A hozzászóláshoz be kell jelentkezni
Amugy sikerult a vizsga? Teged legalabb engedtek vizsgazni. :)
- A hozzászóláshoz be kell jelentkezni
áhh, nem tudtam elmenni...nem volt időm ennyi archi, meg intelligens mellett:D de téged miért nem engedett végül?
- A hozzászóláshoz be kell jelentkezni
öröm olvasni egy kis perlt:D
most tanulom autodidaktán: oldogatom a Project Euler feladatait, ahhoz használok elég gyakran perl-t... Pedig konkrétan semmi tapasztalatom/előéletem nincs vele:)
(off: ettől függetlenül ízlés szerint oldogatom a feladatokat még c, javascript, php, python nyelveken. Az elején rubyval is próbálkoztam, de aztán leszoktam róla:D)
—-—-—
int getRandomNumber() {
return 4; //szabályos kockadobással választva.
//garantáltan véletlenszerű.
} //xkcd
- A hozzászóláshoz be kell jelentkezni