Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

zwei Versionen eines Bildes skalieren und ablegen

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
kipp
•-->
•-->


Anmeldedatum: 27.03.2007
Beiträge: 73
Wohnort: Göttingen

BeitragVerfasst am: 02.06.2016 - 13:31    Titel: zwei Versionen eines Bildes skalieren und ablegen Antworten mit Zitat

Hallo,

ich brauche ein Skript, das in Bild in zwei verschiedenen Skalierungen auf der Platte ablegt. Mit meinen rudimentären Kenntnissen bin ich so weit gekommen, dass das Test-Bild skaliert und abgelegt wird. Bei der zweiten Skalierung des selben Bildes zickt das Skript aber rum.

Würde mich freuen, wenn mir jemand einen Tipp (oder gar einen einfacheren Ansatz) geben könnte.

kipp


Code:


-- S T A R T :  D A T E I E N   A U S W Ä H L E N

set theFiles to choose file with prompt "Datei(en) Auswählen" of type openTypes with multiple selections allowed without invisibles
runConversion(theFiles)

on open someFiles
   runConversion(someFiles)
end open


-- A K T I O N E N

on runConversion(theItems)
   
   -- Benutzernamen suchen
   set userName to long user name of (system info)
   
   set Pfad_Images to ("/Volumes/Bibliotheken//Images/" as POSIX file)
   set Pfad_Vorschaubilder to ("/Volumes/Bibliotheken/Images_Vorschaubilder/" as POSIX file)
   
   set mydialog to display dialog "Schlagworte angeben" with icon 1 default answer ""
   set DateiName to text returned of mydialog
   
   set d to current date
   set derTag to text -2 thru -1 of ("0" & d's day)
   set MonatsListe to {January, February, March, April, May, June, July, August, September, October, November, December}
   repeat with i from 1 to 12
      if d's month = item i of MonatsListe then
         set MM to text -2 thru -1 of ("0" & i)
         exit repeat
         -- wenn true, wird die Schleife verlassen
      end if
   end repeat
   set Jahr to ((year of d) as text)
   set dasDatum to Jahr & MM & derTag
   
   repeat with myfile in theItems
      
      -- D A T E I   U M B E N E N N E N
      
      tell application "Finder"
         set ext to name extension of myfile
         if ext is "JPG" then set ext to "jpg"
         if ext is "JPEG" then set ext to "jpg"
         if ext is "jpeg" then set ext to "jpg"
         set the_name to (DateiName & " - " & userName & " " & dasDatum & "." & ext)
         log the_name
         set name of myfile to the_name
      end tell
      
      -- D A T E I   S K A L I E R E N : 800 PX
      
      tell application "Image Events"
         launch
         set imageFile to (open myfile)
         scale imageFile to size 800
         save imageFile with icon
         close imageFile
      end tell
      
      -- D A T E I   V E R S C H I E B E N
      
      set Error_Verschieben to ""
      tell application "Finder"
         duplicate file the_name to folder Pfad_Images
      end tell
      
      delay 1
      
      -- D A T E I   S K A L I E R E N : 100 PX
      
      tell application "Image Events"
         launch
         set imageFile to (open myfile)
         scale imageFile to size 100
         save imageFile with icon
         close imageFile
      end tell
      
      -- D A T E I   V E R S C H I E B E N
      
      tell application "Finder"
         move file the_name to folder Pfad_Vorschaubilder
      end tell
      
   end repeat
      
end runConversion
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Wolle-77
•--->
•--->


Anmeldedatum: 25.02.2003
Beiträge: 447
Wohnort: Geldern

BeitragVerfasst am: 15.06.2016 - 07:40    Titel: Antworten mit Zitat

Hallo kipp,

ich hoffe, Du wartest noch auf eine Antwort – ansonsten einfach als Alternative zu Deiner eventuell in der Zwischenzeit gefundenen Lösung betrachten :)

Habe Dein Script mal nach der Analyse ordentlich optimiert und daher auch eingekürzt.
Dein Logikproblem war, daß Du erst die Datei umbenannt hast, folglich konnte der Finder die Datei dann nicht mehr finden.
Vielleicht weißt Du, was ich vom Finder-Scripting halte (nicht viel), aber in dem Fall bin ich auch deshalb bewußt weg vom Finder gegangen, da der duplicate-Befehl leider keine Referenz auf das Ergebnis bietet. Sprich, das result gibt nur den neuen Dateinamen als string zurück. Wenn der Befehl so etwas bieten würde wie "Dupliziere die Datei an die Stelle unter folgendem Namen", dann könnte man diesen nutzen. So aber müßte der Pfad erst rekonstruiert werden … Diese ganze Arbeit in mehreren Schritten sparen wir uns nun, in dem einfach einmal die Kopier- und Verschiebearbeit von der Shell erledigt wird. Dort ist es kein Problem, einen neuen Namen direkt mitzugeben.
Als Nebeneffekt hast Du nun sauber ganz oben in den properties (brauchen nicht jedesmal zugewiesen werden) die beiden Pfade – als Unixpfade.

Auch beim Datumsbilden siehst Du, es braucht keine Schleife. Die anderen Kleinigkeiten wirst Du selbst als Unterschiede finden.

Code:
property Pfad_Images : "/Users/martinwolter/Desktop/Bildbearbeitung/img/"
property Pfad_Vorschaubilder : "/Users/martinwolter/Desktop/Bildbearbeitung/tn/"

on run
   set dateien to choose file with prompt "Datei(en) Auswählen" of type {"public.jpeg", "public.png", "public.tiff"} with multiple selections allowed without invisibles
   my bild800und100(dateien)
end run

on open dateien
   my bild800und100(dateien)
end open

on bild800und100(dateien)
   set userName to long user name of (system info)
   set schlagworte to text returned of (display dialog "Schlagworte angeben" with icon 1 default answer "")
   set {d, my text item delimiters} to {current date, ""}
   set {derTag, monat, jahr} to {text -2 thru -1 of ("0" & day of d), text -2 thru -1 of ("0" & ((month of d) as integer)), year of d}
   repeat with datei in dateien
      tell application "Finder" to set ext to name extension of datei
      if ext is in {"JPG", "JPEG"} then set ext to "jpg"
      set dateiname to (schlagworte & " – " & userName & " " & jahr & monat & derTag & "." & ext) as string
      do shell script "cp " & quoted form of POSIX path of datei & " " & quoted form of (Pfad_Images & dateiname) & " ; mv " & quoted form of POSIX path of datei & " " & quoted form of (Pfad_Vorschaubilder & dateiname)
      tell application "Image Events"
         set imageFile to (open ((Pfad_Images & dateiname) as POSIX file))
         scale imageFile to size 800
         save imageFile with icon
         close imageFile
         set imageFile to (open ((Pfad_Vorschaubilder & dateiname) as POSIX file))
         scale imageFile to size 100
         save imageFile with icon
         close imageFile
      end tell
   end repeat
end bild800und100

_________________
Martin Wolter
--
Apple rocks the planet!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
kipp
•-->
•-->


Anmeldedatum: 27.03.2007
Beiträge: 73
Wohnort: Göttingen

BeitragVerfasst am: 16.06.2016 - 15:43    Titel: klappt wunderbar Antworten mit Zitat

Hallo Wolle,

ja, ich bin seit meinem Eintrag noch nicht wirklich weiter gekommen und war jetzt ein paar Tage unterwegs - Dein Einsatz war also nicht umsonst! ;-)

Ich hatte es schon mit einer Rekonstruktion der Pfade probiert, bin daran aber immer wieder gescheitert. Mit der Shell habe ich mich bis dato immer nur im Rahmen von cp funktionierendes_Skript neues_Skript und dann mit viel Testen auseinandergesetzt. Wird aber wohl mal Zeit...

Bin Dein Skript gewissenhaft durchgegangen und freue mich über die vielen (für mich zum Teil neuen) Vereinfachungen. An dieser Stelle einen großen Dank für Deine Unterstützung!

kipp
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kipp
•-->
•-->


Anmeldedatum: 27.03.2007
Beiträge: 73
Wohnort: Göttingen

BeitragVerfasst am: 17.06.2016 - 13:17    Titel: Antworten mit Zitat

Kleiner Nachtrag - leider werden die letzten Bilder anscheinend überschrieben, wenn mehrere Dateien ausgewählt werden - ich würde daher wie unten angegeben einen kleinen Zähler einsetzen - oder gibt es da noch was geschickteres, bzw. einen "automatischen Überschreibschutz"?

Gruß,
kipp


Code:


set meinzaehler to 0
   repeat with datei in dateien
      set meinzaehler to meinzaehler + 1
      tell application "Finder" to set ext to name extension of datei
      if ext is in {"JPG", "JPEG"} then set ext to "jpg"
      set dateiname to (schlagworte & " – " & userName & " " & jahr & monat & derTag & "-" & meinzaehler & "." & ext) as string
      do shell script "cp " & quoted form of POSIX path of datei & " " & quoted form of (Pfad_Images & dateiname) & " ; mv " & quoted form of POSIX path of datei & " " & quoted form of (Pfad_Vorschaubilder & dateiname)
      tell application "Image Events"
         set imageFile to (open ((Pfad_Images & dateiname) as POSIX file))
         scale imageFile to size 800
         save imageFile with icon
         close imageFile
         set imageFile to (open ((Pfad_Vorschaubilder & dateiname) as POSIX file))
         scale imageFile to size 100
         save imageFile with icon
         close imageFile
      end tell
   end repeat

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Wolle-77
•--->
•--->


Anmeldedatum: 25.02.2003
Beiträge: 447
Wohnort: Geldern

BeitragVerfasst am: 28.06.2016 - 17:59    Titel: Antworten mit Zitat

Hallo kipp,

das mit dem Zähler ist in dem Fall die beste Möglichkeit. Das habe ich gar nicht bemerkt, da ich immer nur eine Datei getestet habe. Da Du das Programm Image Events zum Speichern verwendest, liegt es auch in ihm verursacht, daß Dateien überschrieben werden. Wenn Du in die Bibliothek von Image Events hineinschaust, siehst Du, daß der save-Befehl dort nur folgende Möglichkeiten bietet:

Code:
save v : Save an image to a file in one of various formats
save specifier : the object for the command
[as BMP/‌JPEG/‌JPEG2/‌PICT/‌PNG/‌PSD/‌QuickTime Image/‌TIFF] : file type in which to save the image ( default is to make no change )
[icon boolean] : Shall an icon be added? ( default is false )
[in text] : file path in which to save the image, in HFS or POSIX form
[PackBits boolean] : Are the bytes to be compressed with PackBits? ( default is false, applies only to TIFF )
[with compression level high/‌low/‌medium] : specifies the compression level of the resultant file ( applies only to JPEG )
→ alias
#
Sprich, es ist kein with/without overwriting existing files verfügbar, wie in so vielen anderen Programmen.

Du könntest vor dem Speichern ein do shell script "test -f ..." absetzen, was Dir dann liefert, ob die Datei existiert oder nicht. Würde ich aber von abraten, ist sehr performance-fressend. Da kannst Du besser mit einem Zähler wie von Dir eingebaut arbeiten und bist fertig (sofern Du noch die Uhrzeit anfügst, evtl. reicht es aber auch so schon).
_________________
Martin Wolter
--
Apple rocks the planet!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
kipp
•-->
•-->


Anmeldedatum: 27.03.2007
Beiträge: 73
Wohnort: Göttingen

BeitragVerfasst am: 28.06.2016 - 18:06    Titel: Antworten mit Zitat

Hallo Wolle,

Danke für die Rückmeldung! Ich habe es mit dem Zähler ausprobiert uns es klappt so weit ganz gut. Da ich hin und wieder einige Bilder in Serie mache, klappt es mit der Uhrzeit selbst auch bei der Angabe von hhmmss nicht ganz (dafür ist die Kamera zu schnell ;-) Daher die Idee mit dem Zähler.

Noch einmal einen herzlichen Dank für Deine Unterstützung. Läuft super!

kipp
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Basara008
•->
•->


Anmeldedatum: 27.10.2016
Beiträge: 2

BeitragVerfasst am: 27.10.2016 - 10:02    Titel: Antworten mit Zitat

Thank you very much for the very informative.




max bet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter