Förbättra mitt fotoskript? Behöver hjälp...igen :) [LÖST]

Här diskuteras programmering och utveckling
Användarvisningsbild
TobbeT
Inlägg: 670
Blev medlem: 20 feb 2007, 11:45
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Eskilstuna

Förbättra mitt fotoskript? Behöver hjälp...igen :) [LÖST]

Inlägg av TobbeT »

Hej,

Konservburken hjälpte mig med detta skript som jag använder i stort sett dagligen. Nu skulle jag vilja "lägga" till lite mer operationer i skriptet

Kod: Markera allt

#!/bin/bash
find -iregex '.*\.jpe?g' -type f -execdir mkdir -p 1280x960 \; -execdir mogrify -path 1280x960 -scale 1280x960\> {} \;
Det ser ut enlig ovan idag. Det jag skulle vilja att det gör efter detta är att skapa en zip-fil med samma namn som storleken på fotot (1280x960), sen ta bort bilderna i aktuell katalog så att enbart zip-filen finns kvar. Varför jag vill göra så är att i WordPress kan man ladda upp zip-filer innehållande foton om man har NextGen Gallery installerat. Mycket smidigt tycker jag.

Tacksam för lite hjälp...åter igen :)

//Tobbe
Senast redigerad av 1 TobbeT, redigerad totalt 28 gånger.
GGS-Data Elite, 5200+ 4GB RAM Ubuntu 11.04 64-bitars, 2x500GB HD
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av David Andersson »

Jag har kikat i http://ubuntu-se.org/phpBB3/viewtopic.p ... 02#p243122 och http://ubuntu-se.org/phpBB3/viewtopic.php?f=35&t=36410 för att försöka förstå hur scriptet är tänkt att användas. Om jag fattat rätt (och antar att scriptet heter "min_skalare") så gör du normalt så att du går med cd i en terminal till en mapp med nya foton och skriver kommandot min_skalare. Det förutsätter att scriptet är sparat i mappen ~/bin. Alternativt att du har sparat scriptet i mappen ~/.gnome2/nautilus-scripts och i filutforskaren högerklickar i mappen med nya bilder och väljer Scripts > min_skalare. I dessa fall, om du inte gör cd, eller gör cd till en mapp högre upp, eller starter nautilus-scriptet i en mapp högre upp, så kommer scriptet att behandla alla bilder, gamla som nya. (Tipset om -maxdepth 0 eller /<siffror>x<siffror>/ är inte implementerad i scriptet du citerar.)

Får jag föreslå att scriptet ändras så att det inte söker efter alla bilder i alla undermappar utan att det måste startas i mappen med bilder (normalt mappen med nya bilder), alternativt ges argument med mappar eller filer som ska behandlas. Är det ok?

I så fall blir huvudstrukturen för scriptet

Kod: Markera allt

mkdir $TEMPDIR
mogrify -path $TEMPDIR -scale 1280x960\> $ARG/*.jpg
zip -rm $ARG.zip $TEMPDIR
Förutom detta ska scriptet uttökas med avancerad lokig för att sätta ARG och TEMPDIR (och en initial #!). Men det tar vi om du tycker att förutsättningarna är ok.
Användarvisningsbild
TobbeT
Inlägg: 670
Blev medlem: 20 feb 2007, 11:45
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Eskilstuna

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av TobbeT »

Men det tar vi om du tycker att förutsättningarna är ok.
Absolut ok. Huvudsaken är att scriptet (som idag ligger i gnome2/nautilus -script och heter så enkelt som 1280x960. Sen har jag flera beroende på vilken storlek jag vill ha på bilden. Ibland vill jag kanske ha alla bilder i formatet 200x153 då ska den scriptet fixa det och sen skapa en zip-fil som sedan deletar alla bilder förutom originalen då förstås.

//Tobbe
GGS-Data Elite, 5200+ 4GB RAM Ubuntu 11.04 64-bitars, 2x500GB HD
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av David Andersson »

TobbeT skrev:
Men det tar vi om du tycker att förutsättningarna är ok.
Absolut ok. Huvudsaken är att scriptet (som idag ligger i gnome2/nautilus -script och heter så enkelt som 1280x960. Sen har jag flera beroende på vilken storlek jag vill ha på bilden.
När man skapar en zip-fil, ska alla bilder i filen ha samma skalning, eller ska det gå att blanda t.ex 1280x960 och 200x153 i samma zip? (Antar att alla ska vara samma för att snabbt komma vidare.)

Jag skulle föreslå att scriptet som skapas heter "min_skalare" och att det sparas i mappen ~/bin . Det ska utformas att klara alla skalningar så vi slipper dubblering av kod. I ~/.gnome2/nautilus-scripts gör du symboliska länkar med namnen "1280x960", "200x153", osv, som alla pekar på ~/bin/min_skalare .

Huvudstruktur

Kod: Markera allt

mkdir $TEMPDIR
mogrify -path $TEMPDIR -scale $SCALE\> $ARG/*.jpg
zip -rm $ARG.zip $TEMPDIR
Nu behövs ytterligare en avancerad grej i början som sätter SCALE efter namnet som startade scriptet.

En tillfällig lösning för i kväll till vi gjort ett mer robust och flexibelt script

Kod: Markera allt

#!/bin/bash
#
# Scale down jpg-images i current dir and save them in a zip file in same dir.
# Zip file is named after the scale applied, e.g. "1280x960.zip"
# Save this script in ~/bin
# Create symlinks in ~/.gnome2/nautilus-scripts named "1280x960" etc

SCALE=$(basename "$0")
TEMPDIR=$SCALE

mkdir "$TEMPDIR"
mogrify -path "$TEMPDIR" -scale "$SCALE"\> *.jpg
zip -rm "$SCALE".zip "$TEMPDIR"
Byt *.jpg till *.JPG om det behövs.
Användarvisningsbild
TobbeT
Inlägg: 670
Blev medlem: 20 feb 2007, 11:45
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Eskilstuna

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av TobbeT »

Det ser bra ut. Gjorde en liten test och zip-filen skapas men den innehåller en katalog vilket det inte ska göra, bara dom ner skalade bilderna ska vara packade i zip-filen.

Det här kommer att bli kanon när det blir klart. Tack så här långt för hjälpen.

//Tobbe
GGS-Data Elite, 5200+ 4GB RAM Ubuntu 11.04 64-bitars, 2x500GB HD
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av David Andersson »

TobbeT skrev:men den innehåller en katalog vilket det inte ska göra
man zip säger
-j Store just the name of a saved file (junk the path), and do not
store directory names. By default, zip will store the full path
(relative to the current path).
Ändra -rm till -rmj och lägg till ett nytt kommando rmdir "$TEMPDIR" på slutet (eftersom zip inte längre tar bort den tomma mappen).

Låt dej inte luras av att det fungerar. Det måste vara robust och flexibelt och framförallt vackert, och där är vi inte riktigt än.
Användarvisningsbild
TobbeT
Inlägg: 670
Blev medlem: 20 feb 2007, 11:45
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Eskilstuna

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av TobbeT »

Ändra -rm till -rmj och lägg till ett nytt kommando rmdir "$TEMPDIR" på slutet (eftersom zip inte längre tar bort den tomma mappen).
Fixat

//Tobbe
GGS-Data Elite, 5200+ 4GB RAM Ubuntu 11.04 64-bitars, 2x500GB HD
Användarvisningsbild
TobbeT
Inlägg: 670
Blev medlem: 20 feb 2007, 11:45
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Eskilstuna

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av TobbeT »

Ok...

Vart tog du vägen David. Scriptet är väl inte klart att användas som det är nu, eller hur? Jag vill inte vara för gå-påig men det har inte hänt nåt sedan den 4:e juni, idag 2 veckor. Vill du inte fortsätta att hjälpa mig med scriptet så får du säga till. Det är inget jag "måste" ha men det skulle underlätta rätt mycket.

Tacksam för svar

//Tobbr
GGS-Data Elite, 5200+ 4GB RAM Ubuntu 11.04 64-bitars, 2x500GB HD
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av David Andersson »

TobbeT skrev: Vart tog du vägen David. Scriptet är väl inte klart att användas som det är nu, eller hur?
Jo, det ska fungera. Har du provat och vad är det som i så fall inte funkar?

Min kommentar om att det behöver utvecklas handlar om
1) möjligt att ange antingen mapp eller fil som parametrar (och båda) (*)
2) inte hårdkoda stor eller liten bokstav i "JPG", och känna igen fler bildtyper
3) möjligt att använda både som kommando och nautilus-script (**)
4) eventuellt grafisk felhantering
5) göra det riktigt vackert

(*) Nu använder den alla JPG i aktuell mapp. Man kanske vill kunna markera en delmängd av bilderna och skala och packa ihop bara dem.

(**) 3 tyckte jag var smart då, men tycker det numera är minst viktigt.
Användarvisningsbild
TobbeT
Inlägg: 670
Blev medlem: 20 feb 2007, 11:45
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Eskilstuna

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av TobbeT »

Hej,

Njae, det funkar väl inte riktigt. Jag förstår inte hur det kan skapas bilder med storleken 1280x960 med scriptet när det inte är angivet nånstans i filen. Om jag vill ha bilderna i en annan storlek, hur gör jag då, då det inte finns angivet i "min_skalare" filen? Sen blir katalogen 1280x960 kvar, tom. Den ska raderas efter att zip-filen är skapad.

Kod: Markera allt

#!/bin/bash
#
# Scale down jpg-images i current dir and save them in a zip file in same dir.
# Zip file is named after the scale applied, e.g. "1280x960.zip"
# Save this script in ~/bin
# Create symlinks in ~/.gnome2/nautilus-scripts named "1280x960" etc

SCALE=$(basename "$0")
TEMPDIR=$SCALE

mkdir "$TEMPDIR"
mogrify -path "$TEMPDIR" -scale "$SCALE"\> *.jpg
zip -rmj "$SCALE".zip rmdir "$TEMPDIR"
//Tobbe
GGS-Data Elite, 5200+ 4GB RAM Ubuntu 11.04 64-bitars, 2x500GB HD
Användarvisningsbild
TobbeT
Inlägg: 670
Blev medlem: 20 feb 2007, 11:45
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Eskilstuna

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av TobbeT »

Näe,

Det vill sig inte. Nu har jag testat ett tag med olika format men en gång av tre så funkar det (förutom att katalogen blir kvar efter att zip filen är skapad). Jag testade i en katalog där jag hade 12 bilder. Jag valde att skala ner dom till 1350x1013...mappen skapades men ingen zipfil. Testade igen i en annan mapp, där skapades katalogen men inga nerskalade bilder alls. Det blir lite hip-som-hap, ibland funkar det, och ibland inte.

Jag kom underfund med att bilden blir den storlek jag döper min_skalare fil till.

//Tobbe
GGS-Data Elite, 5200+ 4GB RAM Ubuntu 11.04 64-bitars, 2x500GB HD
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av David Andersson »

zip -rmj "$SCALE".zip rmdir "$TEMPDIR"
Kommandot rmdir "$TEMPDIR" ska vara på en egen rad. (Spara som ~/bin/min_skalare och gör exekverbar):

Kod: Markera allt

#!/bin/bash
#
# Scale down jpg-images i current dir and save them in a zip file in same dir.
# Zip file is named after the scale applied, e.g. "1280x960.zip"
# Save this script in ~/bin
# Create symlinks in ~/.gnome2/nautilus-scripts named "1280x960" etc

SCALE=$(basename "$0")
TEMPDIR=$SCALE

mkdir "$TEMPDIR"
mogrify -path "$TEMPDIR" -scale "$SCALE"\> *.jpg
zip -rmj "$SCALE".zip "$TEMPDIR"
rmdir "$TEMPDIR"
Jag kom underfund med att bilden blir den storlek jag döper min_skalare fil till.
Ja, men man kan göra som i kommenteren i scriptet: symboliska länkar med namnen BREDDxHÖJD så kan man ha flera nautilus-script för olika storlekar. Och så behöver man bara buggfixa scripten på ett ställe. ( :) )

Exempel: skapa symlänkar till min_skalare i terminalen

Kod: Markera allt

ln -s ~/bin/min_skalare ~/.gnome2/nautilus-scripts/1400x1050
ln -s ~/bin/min_skalare ~/.gnome2/nautilus-scripts/1280x960
ln -s ~/bin/min_skalare ~/.gnome2/nautilus-scripts/1024x768
ln -s ~/bin/min_skalare ~/.gnome2/nautilus-scripts/800x600
Användarvisningsbild
TobbeT
Inlägg: 670
Blev medlem: 20 feb 2007, 11:45
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Eskilstuna

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av TobbeT »

Hmmm,

Nu händer det ingenting. Jag sparade all kod som du hade skrivit i filen min_skalare, gjorde den körbar i bin katalogen, skapade länkar till gnome2/nautilus scripts, skapade ett antal filer med namnen 150x113, 200x153, osv, alltså en kopia av min_skalare. Har testat alla i olika kataloger med olika antal bilder men nu skapas det ingenting när jag exekverar scriptet, varken nerskalade bilder eller zip-filen, inte ens katalogen för aktuell storlek skapas.

Kod: Markera allt

#!/bin/bash
#
# Scale down jpg-images i current dir and save them in a zip file in same dir.
# Zip file is named after the scale applied, e.g. "1280x960.zip"
# Save this script in ~/bin
# Create symlinks in ~/.gnome2/nautilus-scripts named "1280x960" etc

SCALE=$(basename "$0")
TEMPDIR=$SCALE

mkdir "$TEMPDIR"
mogrify -path "$TEMPDIR" -scale "$SCALE"\> *.jpg
zip -rmj "$SCALE".zip "$TEMPDIR"
rmdir "$TEMPDIR"
//Tobbe
GGS-Data Elite, 5200+ 4GB RAM Ubuntu 11.04 64-bitars, 2x500GB HD
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av David Andersson »

TobbeT skrev:Hmmm,

Nu händer det ingenting.
Startar du skripten med t.ex högerklick > skript > 200x153 ? Kan du prova att starta dem i en terminal och se vad det blir för felmeddelande. Gå till en mapp med bilder med cd. Exempel

Kod: Markera allt

cd ~/Bilder/2009-06-24_19:29
Starta ett av skripten. Exempel

Kod: Markera allt

~/.gnome2/nautilus-scripts/200x153
Om det går bra ska den säga rader som börjar med "adding: [filnamn]" ett antal gånger. Säger den nåt annat också?
Användarvisningsbild
TobbeT
Inlägg: 670
Blev medlem: 20 feb 2007, 11:45
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Eskilstuna

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av TobbeT »

Kod: Markera allt

tobbe@xbmc:/media/DATA/Bilder/Tobbe/2009/02/07-02$ ~/.gnome2/nautilus-scripts/200x153
mogrify: unable to open image `*.jpg': No such file or directory @ magick/blob.c/OpenBlob/2418.

zip error: Nothing to do! (try: zip -rmj 200x153.zip . -i 200x153)
PS: Jag högerklickar också i aktuell katalog och väljer storleken jag är ute efter. Händer ingenting.

//Tobbe
GGS-Data Elite, 5200+ 4GB RAM Ubuntu 11.04 64-bitars, 2x500GB HD
Användarvisningsbild
Xappe
Inlägg: 463
Blev medlem: 16 dec 2005, 20:24
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS
Ort: Uppsala

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av Xappe »

TobbeT skrev:

Kod: Markera allt

tobbe@xbmc:/media/DATA/Bilder/Tobbe/2009/02/07-02$ ~/.gnome2/nautilus-scripts/200x153
mogrify: unable to open image `*.jpg': No such file or directory @ magick/blob.c/OpenBlob/2418.

zip error: Nothing to do! (try: zip -rmj 200x153.zip . -i 200x153)
PS: Jag högerklickar också i aktuell katalog och väljer storleken jag är ute efter. Händer ingenting.

//Tobbe
Hmm, heter bilderna *.jpg eller *.JPG?
vanum est vobis ante lucem surgere
Användarvisningsbild
TobbeT
Inlägg: 670
Blev medlem: 20 feb 2007, 11:45
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Eskilstuna

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av TobbeT »

Alltid .jpg, aldrig .JPG

//Tobbe
GGS-Data Elite, 5200+ 4GB RAM Ubuntu 11.04 64-bitars, 2x500GB HD
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av David Andersson »

TobbeT skrev:Alltid .jpg, aldrig .JPG
"mogrify: unable to open image `*.jpg': No such file or directory" tyder på att det inte finns några filer som matchar *.jpg i aktuell mapp. Om du skriver eller

Kod: Markera allt

ls *.jpg
i samma mapp där du skrev ~/.gnome2/nautilus-scripts/200x153, vad visar den då?
Användarvisningsbild
TobbeT
Inlägg: 670
Blev medlem: 20 feb 2007, 11:45
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Eskilstuna

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av TobbeT »

Sorry,

Fel av mig ;) blind som f-n. Det ska självklart vara JPG inte jpg. Ber om ursäkt. Jag ändrade i min_skalare nder bin katalogen och nu funkar det. Om jag vill ha det med småbokstäver istället, hur gör jag då? Alltså .jpg när skalningen är klar och zip-filen skapad.

//Tobbe
GGS-Data Elite, 5200+ 4GB RAM Ubuntu 11.04 64-bitars, 2x500GB HD
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Förbättra mitt fotoskript? Behöver lite hjälp...igen :)

Inlägg av David Andersson »

TobbeT skrev:Om jag vill ha det med småbokstäver istället, hur gör jag då? Alltså .jpg när skalningen är klar och zip-filen skapad.
Det är en eller två av två olika frågor. 1) Att scriptet ska klara både .jpg och .JPG (och kanske .JpG, .jPg, .jpeg, etc). 2) Att scriptet ska döpa de nedskalade bilderna till små (.jpg) oavsett om originalet hade .jpg eller .JPG (och kanske .jPg, .jpeg, etc).

1a) 1) kan man lösa med att ha både *.jpg och *.JPG som argument till mogrify. Men då kommer man nästan alltid att få ett felmeddelande från kommandot (att den inte hittar "*.JPG" om det bara fanns .jpg), men den kommer för övrigt att göra det den ska. (Man kan lägga till *.jpeg och *.JPEG och även *.gif, *.GIF, *.png och *.PNG för att klara fler bildtyper. Allt kan sammanfattas i ett argument med klamrar *.{jpg,JPG,jpeg,JPEG,gif,GIF,png,PNG}, men fortfarande får man det onödiga felmeddelandet för filer som inte finns.)

1b) alternativt en lösning med file-kommandot som klassificerar filtyp utan att titta på filnamnändelsen. Med kommandot file -F ':-)' --mime-type * | awk -F ':-)' '/ image\//{print $1}' listas alla filnamn som är bilder, oavsett om de har en ändelse och vad för ändelse. Sen gäller det att bjuda mogrify den listan på ett sätt som klarar mellanslag i filnamn.

2a) 2) borde kunna lösas med t.ex kommandot prename på lämpligt ställe i scriptet.

Allt ovanstående försämrar scriptet på det sättet att det blir fulare. Som scriptet är nu har det i huvudsak fyra rader med fyra kommandon, mkdir, mogrify, zip och rmdir. Kommandona kommer i en naturlig ordning och gör det de ska på ett ganska begripligt sätt. Utmaningen är att genomföra förbättringarna utan att förstöra denna skönhet.

Men först, vad är viktigast just nu: 1) eller 2)?
Skriv svar

Återgå till "Programmering och webbdesign"