1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Bilder per AppleScript verkleinern?

Dieses Thema im Forum "AppleScript" wurde erstellt von Hyaena, 07.12.08.

  1. Hyaena

    Hyaena Alkmene

    Dabei seit:
    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
     
  2. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    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
     
  3. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    :-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]
    
    
     
  4. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
  5. CloneOfMyself

    CloneOfMyself Weigelts Zinszahler (Rotfranch)

    Dabei seit:
    24.02.07
    Beiträge:
    253
    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
     
  6. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    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 =)
     
    CloneOfMyself gefällt das.
  7. CloneOfMyself

    CloneOfMyself Weigelts Zinszahler (Rotfranch)

    Dabei seit:
    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
     

Diese Seite empfehlen