Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: python en batch?  (gelezen 19800 keer)

Offline leendert

  • Lid
    • Dutchgimpers.nl
python en batch?
« Gepost op: 2008/04/30, 17:35:23 »
Hoi,

Ik heb een vraagje.

Kun je vanuit python batch opdrachten laten uitvoeren?

Ik wil namelijk een programmaatje maken met python die dmv van de batchmode van GIMP http://www.gimp.org/tutorials/Basic_Batch/ simpele bewerkingen op foto's kan uitvoeren.

Is dit mogelijk met python?

Offline idefix

  • Lid
python en batch?
« Reactie #1 Gepost op: 2008/04/30, 20:06:23 »
Bedoel je met batch-opdrachten shell-opdrachten?

bijvoorbeeld:
import os
os.system("ls")
zal het shell commando ls uitvoeren
Support bacteria. They're the only culture some people have.

Offline leendert

  • Lid
    • Dutchgimpers.nl
python en batch?
« Reactie #2 Gepost op: 2008/04/30, 20:20:39 »
Inderdaad ik bedoel shell-opdrachten.

En bedankt, zo werkt het perfect!

Offline leendert

  • Lid
    • Dutchgimpers.nl
python en batch?
« Reactie #3 Gepost op: 2008/04/30, 21:44:19 »
Kan iemand mij hiermee helpen:

Ik wil dus vanuit python de volgende shell-opdracht uitvoeren:
gimp -i -b '(test "1.JPG")' '(gimp-quit 0)'

Als ik het zo doet:
os.system("gimp -i -b '(test "1.JPG")' '(gimp-quit 0)'")

Dan kloppen die dubbele quotes om 1.JPG natuurlijk niet.

Dus ik probeer het zo:

os.system("gimp -i -b '(test \"1.JPG\")' '(gimp-quit 0)'")

Dan krijg ik de volgende foutmelding van GIMP:

GIMP-Fout: Openen van '/home/leendert/(gimp-quit 0)' mislukte: Bestand of map bestaat niet

Hij pakt dan dus dat gimp-quit bij de bestandsnaam erbij.

En vervolgens heb ik het ook zo geprobeerd maar dat geeft dezelfde foutmelding:

        bestand = "1.JPG"
        opdracht = "gimp -i -b '(test" + bestand + ")' '(gimp-quit 0)'"
        os.system(opdracht)

Wie weet een oplossing?

Offline Mij

  • Lid
python en batch?
« Reactie #4 Gepost op: 2008/04/30, 23:21:26 »
als je alleen een system opdracht uitvoert kan je natuurlijk beter
from os import system
doen, dat is gewoon beter:)

Offline Mij

  • Lid
python en batch?
« Reactie #5 Gepost op: 2008/04/30, 23:25:09 »
je moet ook voor de gewone quotes voor systeem opdrachten backslashes invoeren dus
gimp -i -b \'(test \"1.JPG\")\' \'(gimp-quit 0)\'
werkt het dan (kan het nu niet uitproberen).
als je waardes ertussen wilt wordt het dan zo

        bestand = "1.JPG"
        opdracht = "gimp -i -b \'(test" +"\'" + bestand + "\'" + ")\' \'(gimp-quit 0)\'"
        os.system(opdracht)

ofzo, als ik de syntax van de opdrachtregel goed begrijp en ook werkt zo.

Offline idefix

  • Lid
python en batch?
« Reactie #6 Gepost op: 2008/05/01, 07:23:21 »
Citaat van: doan
je moet ook voor de gewone quotes voor systeem opdrachten backslashes invoeren dus
gimp -i -b \'(test \"1.JPG\")\' \'(gimp-quit 0)\'
werkt het dan (kan het nu niet uitproberen).
als je waardes ertussen wilt wordt het dan zo

        bestand = "1.JPG"
        opdracht = "gimp -i -b \'(test" +"\'" + bestand + "\'" + ")\' \'(gimp-quit 0)\'"
        os.system(opdracht)

ofzo, als ik de syntax van de opdrachtregel goed begrijp en ook werkt zo.
Kan je niet met triple quotes werken? Dan heb je dat backslash gedoe niet nodig:

"""dit is een string met "aanhalingstekens" erin"""  
'''dit is een andere string met "aanhalingstekens" erin'''
Ik dacht dat triple quotes eigenlijk gemaakt waren om meerlijnige strings in te geven, maar hiervoor kunnen ze ook gebruikt worden.

Overigens heb je gelijk, Doan, ivm
from os import systemDit is gewoon veel efficiënter.
Support bacteria. They're the only culture some people have.

Offline Mij

  • Lid
python en batch?
« Reactie #7 Gepost op: 2008/05/01, 11:57:44 »
Citaat van: idefix
Citaat van: doan
je moet ook voor de gewone quotes voor systeem opdrachten backslashes invoeren dus
gimp -i -b \'(test \"1.JPG\")\' \'(gimp-quit 0)\'
werkt het dan (kan het nu niet uitproberen).
als je waardes ertussen wilt wordt het dan zo

        bestand = "1.JPG"
        opdracht = "gimp -i -b \'(test" +"\'" + bestand + "\'" + ")\' \'(gimp-quit 0)\'"
        os.system(opdracht)

ofzo, als ik de syntax van de opdrachtregel goed begrijp en ook werkt zo.
Kan je niet met triple quotes werken? Dan heb je dat backslash gedoe niet nodig:

"""dit is een string met "aanhalingstekens" erin"""  
'''dit is een andere string met "aanhalingstekens" erin'''
Ik dacht dat triple quotes eigenlijk gemaakt waren om meerlijnige strings in te geven, maar hiervoor kunnen ze ook gebruikt worden.

Overigens heb je gelijk, Doan, ivm
from os import systemDit is gewoon veel efficiënter.
ok, dat wist ik nog niet, handig!

Offline leendert

  • Lid
    • Dutchgimpers.nl
python en batch?
« Reactie #8 Gepost op: 2008/05/01, 12:17:59 »
Oke,

Ik heb het nu ook op de volgende manieren geprobeerd:

os.system("""gimp -i -b '(test "1.JPG")' '(gimp-quit 0)'""")

en:
os.system("gimp -i -b \'(test \"1.JPG\")\' \'(gimp-quit 0)\'")

Maar bij allebei krijg ik nog steeds de volgende error:

GIMP-Fout: Openen van '/home/leendert/(gimp-quit 0)' mislukte: Bestand of map bestaat niet

Bedankt voor het meedenken!

Offline leendert

  • Lid
    • Dutchgimpers.nl
python en batch?
« Reactie #9 Gepost op: 2008/05/01, 12:26:47 »
hmm de fout zit helemaal niet in het python script maar al in de shell-opdracht:

gimp -i -b '(test "1.JPG")' '(gimp-quit 0)'

Als ik dat direct in de terminal invoert krijg ik dezelfde melding :p

Het moet namelijk zo:

gimp -i -b '(test "1.JPG")' -b '(gimp-quit 0)'

Offline Mij

  • Lid
python en batch?
« Reactie #10 Gepost op: 2008/05/01, 12:28:02 »
ik krijg hetzelfde als ik de overeenkomende opdracht invoer in terminal
gimp -i -b '(test "1.JPG")' '(gimp-quit 0)'
GIMP-Fout: Openen van '/home/daniel/(gimp-quit 0)' mislukte: Bestand of map bestaat niet
edit:
op de site staat dat het zo moet

gimp -i -b '(test "1.JPG")'-b '(gimp-quit 0)
dan kan je geloof ik meerdere batchopdrachten invoeren

dus

os.system("""gimp -i -b '(test "1.JPG")' -b '(gimp-quit 0)'""")
os.system("""gimp -i -b '(simple-unsharp-mask "foo.png" 5.0 0.5 0)' -b '(gimp-quit 0)'""")
zou dus een batchopdracht zijn

Offline leendert

  • Lid
    • Dutchgimpers.nl
python en batch?
« Reactie #11 Gepost op: 2008/05/01, 12:39:01 »
Bedankt Doan! Zo werkt het perfect!

Mijn programmaatje kan nu al gewoon een foto verscherpen :o
Toch al een begin he.

Nu nog een zooi GIMP scripts schrijven die bijvoorbeeld de foto zwart-wit of sepia maakt, de kleuren verbeterd, een mooie rand toevoegt aan de foto, foto schalen....


EDIT: en ondertussen lukt een afbeelding zwart-wit maken ook al.

Offline Mij

  • Lid
python en batch?
« Reactie #12 Gepost op: 2008/05/01, 13:04:09 »
Citaat van: leendert
Bedankt Doan! Zo werkt het perfect!

Mijn programmaatje kan nu al gewoon een foto verscherpen :o
Toch al een begin he.

Nu nog een zooi GIMP scripts schrijven die bijvoorbeeld de foto zwart-wit of sepia maakt, de kleuren verbeterd, een mooie rand toevoegt aan de foto, foto schalen....


EDIT: en ondertussen lukt een afbeelding zwart-wit maken ook al.
leuk! :)
houd ons op de hoogte / publiceer het ergens als je dat wilt (onder open source voorwaarden natuurlijk).

Offline profoX

  • Lid
    • wesley
    • Lionslink
python en batch?
« Reactie #13 Gepost op: 2008/05/01, 15:09:25 »
Wordt dit een kloon van Phatch? ;) http://photobatch.stani.be/
Ook gemaakt in Python, door iemand op dit forum (Stani).
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline Mij

  • Lid
python en batch?
« Reactie #14 Gepost op: 2008/05/01, 15:10:23 »
Maar das niet met GIMP

Offline profoX

  • Lid
    • wesley
    • Lionslink
python en batch?
« Reactie #15 Gepost op: 2008/05/01, 15:25:03 »
Da's waar. Misschien kan je Phatch wel uitbreiden met een Gimp systeem? :)
Zodat men Phatch actions kan schrijven zowel met PIL als met Gimp batch.
Het is maar een idee.
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline leendert

  • Lid
    • Dutchgimpers.nl
python en batch?
« Reactie #16 Gepost op: 2008/05/01, 16:45:38 »
Het wordt toch heel wat anders dan phatch, dit zijn gewoon bewerkingen op maar één foto tegelijk. En het maakt gebruik van GIMP scripts.

Voordeel is dus dat je gebruik kan maken van de vele krachtige opties in GIMP. En het ook eenvoudig uit te breiden is met meer GIMP scripts.

Offline Mij

  • Lid
python en batch?
« Reactie #17 Gepost op: 2008/05/01, 16:51:07 »
Citaat van: leendert
Het wordt toch heel wat anders dan phatch, dit zijn gewoon bewerkingen op maar één foto tegelijk. En het maakt gebruik van GIMP scripts.

Voordeel is dus dat je gebruik kan maken van de vele krachtige opties in GIMP. En het ook eenvoudig uit te breiden is met meer GIMP scripts.
wordt het een programma via de opdrachtregel of met een grafische interface?

Offline profoX

  • Lid
    • wesley
    • Lionslink
python en batch?
« Reactie #18 Gepost op: 2008/05/01, 16:59:12 »
Leendert: als dat het idee is, waarom schrijf je dan niet gewoon Gimp plug-ins of scripts?
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline leendert

  • Lid
    • Dutchgimpers.nl
python en batch?
« Reactie #19 Gepost op: 2008/05/01, 17:05:44 »
Citaat van: doan
Citaat van: leendert
Het wordt toch heel wat anders dan phatch, dit zijn gewoon bewerkingen op maar één foto tegelijk. En het maakt gebruik van GIMP scripts.

Voordeel is dus dat je gebruik kan maken van de vele krachtige opties in GIMP. En het ook eenvoudig uit te breiden is met meer GIMP scripts.
wordt het een programma via de opdrachtregel of met een grafische interface?
grafisch, ik gebruik wxwidgets

Offline leendert

  • Lid
    • Dutchgimpers.nl
python en batch?
« Reactie #20 Gepost op: 2008/05/01, 17:36:09 »
Citaat van: profoX
Leendert: als dat het idee is, waarom schrijf je dan niet gewoon Gimp plug-ins of scripts?
Omdat ik niet de interface van GIMP wilt, maar een overzichtelijke en eenvoudige interface.
Voor veel mensen is GIMP gewoon te ingewikkeld en je leert niet zo snel waar alles zit.

Dit wordt gewoon een simpel programmaatje waarmee je eenvoudige bewerkingen op foto's uit kan voeren.

Offline leendert

  • Lid
    • Dutchgimpers.nl
python en batch?
« Reactie #21 Gepost op: 2008/05/01, 21:14:52 »
Hmm, ik denk toch dat het niks wordt.

Het gaat allemaal veel te sloom. Omdat je perse per opdracht GIMP opnieuw moet starten.

Je kan bijvoorbeeld niet GIMP gelijk tijdens het starten van je programma starten en dan daarna steeds opdrachten aan GIMP geven. Nee je moet GIMP bij eke opdracht opnieuw starten en sluiten. En daar gaat wel erg veel tijd inzitten :s

Offline Mij

  • Lid
python en batch?
« Reactie #22 Gepost op: 2008/05/01, 22:51:09 »
Citaat van: leendert
Hmm, ik denk toch dat het niks wordt.

Het gaat allemaal veel te sloom. Omdat je perse per opdracht GIMP opnieuw moet starten.

Je kan bijvoorbeeld niet GIMP gelijk tijdens het starten van je programma starten en dan daarna steeds opdrachten aan GIMP geven. Nee je moet GIMP bij eke opdracht opnieuw starten en sluiten. En daar gaat wel erg veel tijd inzitten :s
Je kan toch meerdere effecten op laten sparen en uiteindelijk die laten uitvoeren? Dat is het idee van batch tenminste. kan dat niet door -b meerdere keren te gebruiken? staat op de site http://www.gimp.org/tutorials/Basic_Batch/ tenminste.
Op die site zie je dat je hele scripts kan uitvoeren.
Je kan met
gimp --no-interface --batch '(boe)' '(boe2) '(boe3)' '(gimp-quit 1)' zoiets?
en kan je met gimp --no-interface --batch '(boe)' '(boe2) '(boe3)'
dan sluit gimp toch niet af?
dus
os.system("gimp -i") en daarna je opdrachten met
os.system("""-b '(opdracht1)' '(opdracht2)'""")
 zouden het moeten doen, en gimp afsluiten met
os.system("""-b '(gimp-quit 1)'""")
(misschien is het wel zonder streepjes dus
os.system("""-b '(opdracht1)' '(opdracht2)'""")
probeer maar ff uit ;)
:) hoop dat het werkt (kan het nu niet uittesten, zit op windows ;) )

Offline leendert

  • Lid
    • Dutchgimpers.nl
python en batch?
« Reactie #23 Gepost op: 2008/05/02, 21:19:10 »
Je de shell-opdracht perse afsluiten met dat gimp-quit omdat je programma anders geen signaal terug krijgt. De opdracht wordt dus wel goed uitgevoerd  maar mijn programma krijgt niet het signaal dat de opdracht voltooid is.

Dus dat gaat niet werken.

Je hebt wel gelijk dat je in één regel zoveel batch opdrachten kan geven als je wilt. Maar dan moet je de opdrachten van de gebruiker dus opsparen. En je kan dan dus niet na elke keuze van de gebruiker het resultaat al laten zien.

Offline Mij

  • Lid
python en batch?
« Reactie #24 Gepost op: 2008/05/02, 21:31:22 »
Citaat van: leendert
Je de shell-opdracht perse afsluiten met dat gimp-quit omdat je programma anders geen signaal terug krijgt. De opdracht wordt dus wel goed uitgevoerd  maar mijn programma krijgt niet het signaal dat de opdracht voltooid is.

Dus dat gaat niet werken.

Je hebt wel gelijk dat je in één regel zoveel batch opdrachten kan geven als je wilt. Maar dan moet je de opdrachten van de gebruiker dus opsparen. En je kan dan dus niet na elke keuze van de gebruiker het resultaat al laten zien.
ok, das jammer.