Bilder per AppleScript verkleinern?

Hyaena

Alkmene
Registriert
07.12.08
Beiträge
33
Moin,
ich hab mir vor einiger Zeit ein Script geschrieben, das automatisch aus einem Ordner Bilder heraussucht und damit eine Galerie in HTML "schreibt".
"Vorbild" dafür war das Apple-Beispielscript "Build Profile Info Web Page" (zu finden unter AppleScript :Example Scripts:ColorSync:Build...).
Mein Problem ist jedoch, dass ich nicht weiß, wie ich mir die Bilder in ein bestimmtes Format verkleinern lassen kann.

Momentan läuft das Script so, dass die Bilder in einer bestimmten Größe angezeigt werden (<img width=... height=... ... >), es wird aber trotzdem das Originalbild geladen, was irgendwie nicht besonders sinnvoll ist, schließlich will man die Vorschau in der Galerie ja, um schnell sehen zu können, was sich dahinter versteckt.. :)

Weiß zufällig jemand, was ich in das Script schreiben muss, um die Bilder kopieren und verkleinern zu lassen?

Schon mal danke,
hyaena
 

hubionmac

Tydemans Early Worcester
Registriert
25.06.04
Beiträge
393
Ich habe mir mal das als Droplet gebastelt, um Bild einfach klein zu rechnen....kommt eigentlich von macscripter.net
Code:
[color=#2900FF][b]on[/b][/color] [color=#0000FF]open[/color] [color=#3F7F00]some_items[/color]
      [color=#2900FF][b]tell[/b][/color] [color=#2900FF][b]me[/b][/color] [color=#2900FF][b]to[/b][/color] [color=#0000FF]activate[/color]
      [color=#0000FF]display dialog[/color] "Längste Seite" [color=#0000FF]default answer[/color] "1024"
      [color=#2900FF][b]set[/b][/color] [color=#3F7F00]mh[/color] [color=#2900FF][b]to[/b][/color] ([color=#0000FF]text returned[/color] [color=#2900FF][b]of[/b][/color] [color=#2900FF][b]the[/b][/color] [color=#0000FF]result[/color]) [color=#2900FF][b]as[/b][/color] [color=#0000FF]integer[/color]
      [color=#2900FF][b]repeat[/b][/color] [color=#2900FF][b]with[/b][/color] [color=#3F7F00]this_item[/color] [color=#2900FF][b]in[/b][/color] [color=#3F7F00]some_items[/color]
            [color=#2900FF][b]try[/b][/color]
                  [color=#3F7F00]rescale_and_save[/color]([color=#3F7F00]this_item[/color], [color=#3F7F00]mh[/color])
            [color=#2900FF][b]end[/b][/color] [color=#2900FF][b]try[/b][/color]
      [color=#2900FF][b]end[/b][/color] [color=#2900FF][b]repeat[/b][/color]
[color=#2900FF][b]end[/b][/color] [color=#0000FF]open[/color]


[color=#2900FF][b]on[/b][/color] [color=#3F7F00]rescale_and_save[/color]([color=#3F7F00]this_item[/color], [color=#3F7F00]target_width[/color])
      [color=#2900FF][b]tell[/b][/color] [color=#0000FF]application[/color] "Image Events"
            [color=#0000FF]launch[/color]
            --[color=#4C4D4D] open the image file[/color]
            [color=#2900FF][b]set[/b][/color] [color=#3F7F00]this_image[/color] [color=#2900FF][b]to[/b][/color] [color=#0000FF]open[/color] [color=#3F7F00]this_item[/color]
            
            [color=#2900FF][b]set[/b][/color] [color=#3F7F00]typ[/color] [color=#2900FF][b]to[/b][/color] [color=#3F7F00]this_image[/color]'s [color=#0000FF]file type[/color]
            
            [color=#2900FF][b]copy[/b][/color] [color=#0000FF]dimensions[/color] [color=#2900FF][b]of[/b][/color] [color=#3F7F00]this_image[/color] [color=#2900FF][b]to[/b][/color] {[color=#3F7F00]current_width[/color], [color=#3F7F00]current_height[/color]}
            [color=#2900FF][b]if[/b][/color] [color=#3F7F00]current_width[/color] [color=#2900FF][b]is[/b][/color] [color=#2900FF][b]greater than[/b][/color] [color=#3F7F00]current_height[/color] [color=#2900FF][b]then[/b][/color]
                  [color=#0000FF]scale[/color] [color=#3F7F00]this_image[/color] [color=#0000FF]to size[/color] [color=#3F7F00]target_width[/color]
            [color=#2900FF][b]else[/b][/color]
                  --[color=#4C4D4D] figure out new height[/color]
                  --[color=#4C4D4D] y2 = (y1    x2) / x1[/color]
                  [color=#2900FF][b]set[/b][/color] [color=#2900FF][b]the[/b][/color] [color=#3F7F00]new_height[/color] [color=#2900FF][b]to[/b][/color] ([color=#3F7F00]current_height[/color]    [color=#3F7F00]target_width[/color]) / [color=#3F7F00]current_width[/color]
                  [color=#0000FF]scale[/color] [color=#3F7F00]this_image[/color] [color=#0000FF]to size[/color] [color=#3F7F00]new_height[/color]
            [color=#2900FF][b]end[/b][/color] [color=#2900FF][b]if[/b][/color]
            
            [color=#2900FF][b]tell[/b][/color] [color=#0000FF]application[/color] "Finder" [color=#2900FF][b]to[/b][/color] [color=#2900FF][b]set[/b][/color] [color=#3F7F00]new_item[/color] [color=#2900FF][b]to[/b][/color] ¬
                  ([color=#0000FF]container[/color] [color=#2900FF][b]of[/b][/color] [color=#3F7F00]this_item[/color] [color=#2900FF][b]as[/b][/color] [color=#0000FF]string[/color]) & "scaled." & ([color=#0000FF]name[/color] [color=#2900FF][b]of[/b][/color] [color=#3F7F00]this_item[/color])
            [color=#0000FF]save[/color] [color=#3F7F00]this_image[/color] [color=#0000FF]in[/color] [color=#3F7F00]new_item[/color] [color=#0000FF]as[/color] [color=#3F7F00]typ[/color]
            
      [color=#2900FF][b]end[/b][/color] [color=#2900FF][b]tell[/b][/color]
[color=#2900FF][b]end[/b][/color] [color=#3F7F00]rescale_and_save[/color]

Ich bin mir nicht sicher, aber wenn Du viele Bilder (thumbs) haben solltest, könnte es vielleicht schneller gehen, wenn du die thumbs als inline Grafik binärcode in die html Datei rein schreibst. Dann müsste beim Aufruf der Gallerie nur eine Datei geladen werden und nicht n+1 Thumnails...

solchen Binär-Code kannst Du am Mac über einen Shell-Befehl erzeugen
Code:
cat <<PfadzumBild>> | openssl enc -base64
 

hubionmac

Tydemans Early Worcester
Registriert
25.06.04
Beiträge
393
:-D
Code:
[color=#2900FF][b]global[/b][/color] [color=#3F7F00]dimensions_string[/color]
[color=#2900FF][b]on[/b][/color] [color=#0000FF]open[/color] [color=#3F7F00]some_items[/color]
      [color=#2900FF][b]tell[/b][/color] [color=#2900FF][b]me[/b][/color] [color=#2900FF][b]to[/b][/color] [color=#0000FF]activate[/color]
      [color=#0000FF]display dialog[/color] "Längste Seite" [color=#0000FF]default answer[/color] "80"
      [color=#2900FF][b]set[/b][/color] [color=#3F7F00]mh[/color] [color=#2900FF][b]to[/b][/color] ([color=#0000FF]text returned[/color] [color=#2900FF][b]of[/b][/color] [color=#2900FF][b]the[/b][/color] [color=#0000FF]result[/color]) [color=#2900FF][b]as[/b][/color] [color=#0000FF]integer[/color]
      [color=#2900FF][b]set[/b][/color] [color=#3F7F00]html_start[/color] [color=#2900FF][b]to[/b][/color] "<html><head>
      <style type=\"text/css\">
#animage{
      display:inline;
      float:left;
      margin:10px;
      width:" & [color=#3F7F00]mh[/color] + 10 & "px;
      overflow:hidden;

}
#thumb {
      text-align:center;
      height:" & [color=#3F7F00]mh[/color] + 10 & "px;
      
}
body {
      background-color:#000;
      }
h1 {text-align:center;
color:#fff;
}
img{      border-color:#fff;
      border-style:solid;
}
#info {
text-align:center;
color:#fff;
}
</style></head><body>"
      [color=#2900FF][b]set[/b][/color] [color=#3F7F00]html_end[/color] [color=#2900FF][b]to[/b][/color] "</body></html><h1>Image Gallery</h1>"
      
      [color=#2900FF][b]set[/b][/color] [color=#3F7F00]repeat_count[/color] [color=#2900FF][b]to[/b][/color] 0
      [color=#2900FF][b]repeat[/b][/color] [color=#2900FF][b]with[/b][/color] [color=#3F7F00]this_item[/color] [color=#2900FF][b]in[/b][/color] [color=#3F7F00]some_items[/color]
            [color=#2900FF][b]set[/b][/color] [color=#3F7F00]repeat_count[/color] [color=#2900FF][b]to[/b][/color] [color=#3F7F00]repeat_count[/color] + 1
            [color=#2900FF][b]if[/b][/color] [color=#3F7F00]repeat_count[/color] = 1 [color=#2900FF][b]then[/b][/color]
                  [color=#2900FF][b]tell[/b][/color] [color=#0000FF]application[/color] "Finder" [color=#2900FF][b]to[/b][/color] [color=#2900FF][b]set[/b][/color] [color=#3F7F00]the_item_folder[/color] [color=#2900FF][b]to[/b][/color] [color=#0000FF]POSIX path[/color] [color=#2900FF][b]of[/b][/color] (([color=#0000FF]container[/color] [color=#2900FF][b]of[/b][/color] [color=#3F7F00]this_item[/color]) [color=#2900FF][b]as[/b][/color] [color=#0000FF]alias[/color])
                  [color=#2900FF][b]set[/b][/color] [color=#3F7F00]gallery_path[/color] [color=#2900FF][b]to[/b][/color] [color=#3F7F00]the_item_folder[/color] & "_Gallery.html" [color=#2900FF][b]as[/b][/color] [color=#0000FF]text[/color]
                  [color=#3F7F00]write_html[/color]([color=#3F7F00]html_start[/color], [color=#3F7F00]gallery_path[/color], "write")
            [color=#2900FF][b]end[/b][/color] [color=#2900FF][b]if[/b][/color]
            [color=#2900FF][b]tell[/b][/color] [color=#0000FF]application[/color] "Finder" [color=#2900FF][b]to[/b][/color] [color=#2900FF][b]set[/b][/color] [color=#3F7F00]item_name[/color] [color=#2900FF][b]to[/b][/color] [color=#0000FF]name[/color] [color=#2900FF][b]of[/b][/color] [color=#3F7F00]this_item[/color]
            [color=#2900FF][b]set[/b][/color] [color=#3F7F00]bin_code[/color] [color=#2900FF][b]to[/b][/color] [color=#3F7F00]rescale_and_save[/color]([color=#3F7F00]this_item[/color], [color=#3F7F00]mh[/color])
            [color=#2900FF][b]tell[/b][/color] [color=#0000FF]application[/color] "Finder" [color=#2900FF][b]to[/b][/color] [color=#2900FF][b]set[/b][/color] [color=#3F7F00]theimage[/color] [color=#2900FF][b]to[/b][/color] "<div id=\"animage\"><div id=\"thumb\"><a href=\"" & [color=#3F7F00]item_name[/color] & "\"><img src=\"data:image/jpg;base64," & [color=#3F7F00]bin_code[/color] & "\"></a></div><div id=\"info\">" & [color=#3F7F00]item_name[/color] & "</div><div id=\"info\">" & [color=#3F7F00]dimensions_string[/color] & "</div><div id=\"info\">" & ([color=#0000FF]do shell script[/color] "du -h " & [color=#0000FF]quoted form[/color] [color=#2900FF][b]of[/b][/color] ([color=#0000FF]POSIX path[/color] [color=#2900FF][b]of[/b][/color] [color=#3F7F00]this_item[/color]) & "|awk '{split ($0,a,\" \");print a[1]}'") & "</div></div>"
            [color=#3F7F00]write_html[/color]([color=#3F7F00]theimage[/color], [color=#3F7F00]gallery_path[/color], "add")
            
      [color=#2900FF][b]end[/b][/color] [color=#2900FF][b]repeat[/b][/color]
[color=#2900FF][b]end[/b][/color] [color=#0000FF]open[/color]


[color=#2900FF][b]on[/b][/color] [color=#3F7F00]write_html[/color]([color=#3F7F00]thestring[/color], [color=#3F7F00]thefile[/color], [color=#3F7F00]add_this[/color])
      [color=#2900FF][b]if[/b][/color] [color=#3F7F00]add_this[/color] = "add" [color=#2900FF][b]then[/b][/color]
            [color=#0000FF]do shell script[/color] "echo " & [color=#0000FF]quoted form[/color] [color=#2900FF][b]of[/b][/color] [color=#3F7F00]thestring[/color] & "|cat>>" & [color=#0000FF]quoted form[/color] [color=#2900FF][b]of[/b][/color] [color=#3F7F00]thefile[/color]
      [color=#2900FF][b]else[/b][/color]
            [color=#0000FF]do shell script[/color] "echo " & [color=#0000FF]quoted form[/color] [color=#2900FF][b]of[/b][/color] [color=#3F7F00]thestring[/color] & "|cat>" & [color=#0000FF]quoted form[/color] [color=#2900FF][b]of[/b][/color] [color=#3F7F00]thefile[/color]
      [color=#2900FF][b]end[/b][/color] [color=#2900FF][b]if[/b][/color]
[color=#2900FF][b]end[/b][/color] [color=#3F7F00]write_html[/color]


[color=#2900FF][b]on[/b][/color] [color=#3F7F00]rescale_and_save[/color]([color=#3F7F00]this_item[/color], [color=#3F7F00]target_width[/color])
      [color=#2900FF][b]tell[/b][/color] [color=#0000FF]application[/color] "Image Events"
            [color=#0000FF]launch[/color]
            --[color=#4C4D4D] open the image file[/color]
            [color=#2900FF][b]set[/b][/color] [color=#3F7F00]this_image[/color] [color=#2900FF][b]to[/b][/color] [color=#0000FF]open[/color] [color=#3F7F00]this_item[/color]
            
            [color=#2900FF][b]set[/b][/color] [color=#3F7F00]typ[/color] [color=#2900FF][b]to[/b][/color] [color=#3F7F00]this_image[/color]'s [color=#0000FF]file type[/color]
            
            [color=#2900FF][b]copy[/b][/color] [color=#0000FF]dimensions[/color] [color=#2900FF][b]of[/b][/color] [color=#3F7F00]this_image[/color] [color=#2900FF][b]to[/b][/color] {[color=#3F7F00]current_width[/color], [color=#3F7F00]current_height[/color]}
            [color=#2900FF][b]set[/b][/color] [color=#3F7F00]dimensions_string[/color] [color=#2900FF][b]to[/b][/color] [color=#3F7F00]current_width[/color] & " x " & [color=#3F7F00]current_height[/color] [color=#2900FF][b]as[/b][/color] [color=#0000FF]text[/color]
            [color=#2900FF][b]if[/b][/color] [color=#3F7F00]current_width[/color] [color=#2900FF][b]is[/b][/color] [color=#2900FF][b]greater than[/b][/color] [color=#3F7F00]current_height[/color] [color=#2900FF][b]then[/b][/color]
                  [color=#0000FF]scale[/color] [color=#3F7F00]this_image[/color] [color=#0000FF]to size[/color] [color=#3F7F00]target_width[/color]
            [color=#2900FF][b]else[/b][/color]
                  --[color=#4C4D4D] figure out new height[/color]
                  --[color=#4C4D4D] y2 = (y1    x2) / x1[/color]
                  [color=#2900FF][b]set[/b][/color] [color=#2900FF][b]the[/b][/color] [color=#3F7F00]new_height[/color] [color=#2900FF][b]to[/b][/color] ([color=#3F7F00]current_height[/color]    [color=#3F7F00]target_width[/color]) / [color=#3F7F00]current_width[/color]
                  [color=#0000FF]scale[/color] [color=#3F7F00]this_image[/color] [color=#0000FF]to size[/color] [color=#3F7F00]new_height[/color]
            [color=#2900FF][b]end[/b][/color] [color=#2900FF][b]if[/b][/color]
            
            [color=#2900FF][b]tell[/b][/color] [color=#0000FF]application[/color] "Finder" [color=#2900FF][b]to[/b][/color] [color=#2900FF][b]set[/b][/color] [color=#3F7F00]new_item[/color] [color=#2900FF][b]to[/b][/color] ¬
                  ([color=#0000FF]container[/color] [color=#2900FF][b]of[/b][/color] [color=#3F7F00]this_item[/color] [color=#2900FF][b]as[/b][/color] [color=#0000FF]string[/color]) & "scaled." & ([color=#0000FF]name[/color] [color=#2900FF][b]of[/b][/color] [color=#3F7F00]this_item[/color])
            [color=#0000FF]save[/color] [color=#3F7F00]this_image[/color] [color=#0000FF]in[/color] [color=#3F7F00]new_item[/color] [color=#0000FF]as[/color] "JPEG"
            [color=#2900FF][b]try[/b][/color]
                  [color=#2900FF][b]tell[/b][/color] [color=#0000FF]application[/color] "Finder" [color=#2900FF][b]to[/b][/color] [color=#2900FF][b]set[/b][/color] [color=#3F7F00]bin_code[/color] [color=#2900FF][b]to[/b][/color] [color=#0000FF]do shell script[/color] "cat " & [color=#0000FF]quoted form[/color] [color=#2900FF][b]of[/b][/color] ([color=#0000FF]POSIX path[/color] [color=#2900FF][b]of[/b][/color] (([color=#3F7F00]new_item[/color] [color=#2900FF][b]as[/b][/color] [color=#0000FF]text[/color]) [color=#2900FF][b]as[/b][/color] [color=#0000FF]alias[/color])) & "|openssl enc -base64;rm " & [color=#0000FF]quoted form[/color] [color=#2900FF][b]of[/b][/color] ([color=#0000FF]POSIX path[/color] [color=#2900FF][b]of[/b][/color] (([color=#3F7F00]new_item[/color] [color=#2900FF][b]as[/b][/color] [color=#0000FF]text[/color]) [color=#2900FF][b]as[/b][/color] [color=#0000FF]alias[/color]))
            [color=#2900FF][b]on[/b][/color] [color=#2900FF][b]error[/b][/color] [color=#3F7F00]msg[/color]
                  [color=#2900FF][b]tell[/b][/color] [color=#0000FF]application[/color] "Finder" [color=#2900FF][b]to[/b][/color] [color=#0000FF]display dialog[/color] [color=#3F7F00]msg[/color]
            [color=#2900FF][b]end[/b][/color] [color=#2900FF][b]try[/b][/color]
      [color=#2900FF][b]end[/b][/color] [color=#2900FF][b]tell[/b][/color]
      [color=#2900FF][b]return[/b][/color] [color=#3F7F00]bin_code[/color]
[color=#2900FF][b]end[/b][/color] [color=#3F7F00]rescale_and_save[/color]
 

CloneOfMyself

Weigelts Zinszahler (Rotfranch)
Registriert
24.02.07
Beiträge
253
ist eine wirklich nettes Skript geworden...

hi, hubi
ja, das möchte ich mal bestätigen! das sieht wirklich gut aus. einziger haken: ich bekomme es unter tiger nicht ans laufen. die image events fressen da den save-befehl nicht. grrrrr. unter leo perfekt. das sieht wirklich brauchbar aus. fettes lob!
ich suche schon länge nach einer lösung, thumbnails von pdf's zu erstellen. hast du da vielleicht noch eine idee? die üblichen verdächtigen wie image-events und SIPS in der shell spielen ja leider nicht mit pdfs :-c hmm.

gruß, H =:oops:) L G I
 

hubionmac

Tydemans Early Worcester
Registriert
25.06.04
Beiträge
393
i hoaps!
Image Events kommt anscheinend doch mit PDFs klar... Ich habe jetzt eine neue Version die auch PDFs anzeigt (die 1 Seite eben...) in der Info steht dann neben der Größe auch die Anzahl der Seiten, das pfuscht sich das Ding aus dem Spotlight-Index zusammen =)
 
  • Like
Reaktionen: CloneOfMyself

CloneOfMyself

Weigelts Zinszahler (Rotfranch)
Registriert
24.02.07
Beiträge
253
Hi, Hubi

Ganz grosses Kino! Ik könnt dir knutschen :-*. Das sieht richtig gut aus!
VIELEN DANK! Das ist ausbaufähig und läuft ohne "-raw" im mdls-commando auch unter Tiger. Meine Hochachtung!

H =:oops:) L G I