2012-04-05 49 views
0

我對AppleScript一無所知,所以請原諒我。文件夾在Leopard中調整圖像大小的操作10.5.8

目標是創建一個文件夾,我們的圖形人員可以將股票照片放入並將其重新調整爲1280.所選文件夾是網絡文件夾,因此不知道這是否是問題的一部分。他會將圖像粘貼到他的Windows工作站的文件夾中。

這是我迄今拼湊:

on adding folder items to this_folder after receiving added_items 
    repeat with this_item in added_items 
     try 
      rescale_and_save(this_item) 
     end try 
    end repeat 
end adding folder items to 

to rescale_and_save(this_item) 
    tell application "Image Events" 
     launch 
     set the target_height to 1280 
     -- open the image file 
     set this_image to open this_item 

     set typ to this_image's file type 

     copy dimensions of this_image to {current_width, current_height} 
     if current_height is greater than current_width then 
      scale this_image to size target_height 
     else 
      -- figure out new height 
      -- y2 = (y1 * x2)/x1 
      set the new_width to (current_width * target_height)/current_height 
      scale this_image to size new_width 
     end if 

     tell application "Finder" to set new_item to ¬ 
      (container of this_item as string) & "ex" & (name of this_item) 
     save this_image in new_item as typ 

    end tell 
end rescale_and_save 

我右單擊文件夾,啓用的文件夾的操作,並增加我的腳本。我在測試文件中複製,但沒有任何反應。

任何想法?

編輯:

我看了樣品,並與下面的腳本,工程!:

property done_foldername : "Scaled Images" 
property target_height : 1280 
-- the list of file types which will be processed 
-- eg: {"PICT", "JPEG", "TIFF", "GIFf"} 
property type_list : {"JPEG", "TIFF", "PNGf"} 
-- since file types are optional in Mac OS X, 
-- check the name extension if there is no file type 
-- NOTE: do not use periods (.) with the items in the name extensions list 
-- eg: {"txt", "text", "jpg", "jpeg"}, NOT: {".txt", ".text", ".jpg", ".jpeg"} 
property extension_list : {"jpg", "jpeg", "tif", "tiff", "png"} 


on adding folder items to this_folder after receiving these_items 
    -- CHECK FOR THE DESTINATION FOLDER WITHIN THE ATTACHED FOLDER 
    -- IF IT DOESN'T EXIST, THEN CREATE IT 
    tell application "Finder" 
     if not (exists folder done_foldername of this_folder) then 
      make new folder at this_folder with properties {name:done_foldername} 
      set current view of container window of this_folder to list view 
     end if 
     set the target_folder to folder done_foldername of this_folder 
    end tell 
    -- PROCESS EACH OF THE ITEMS ADDED TO THE ATTACHED FOLDER 
    try 
     repeat with i from 1 to number of items in these_items 
      set this_item to item i of these_items 
      set the item_info to the info for this_item 
      -- CHECK TO SEE IF THE ITEM IS AN IMAGE FILE OF THE ACCEPTED FILE TYPE 
      if (alias of the item_info is false and the file type of the item_info is in the type_list) or (the name extension of the item_info is in the extension_list) then 
       tell application "Finder" 
        -- LOOK FOR EXISTING MATCHING ITEMS IN THE DESTINATION FOLDER 
        -- IF THERE ARE MATCHES, THEN RENAME THE CONFLICTING FILES INCREMENTALLY 
        my resolve_conflicts(this_item, target_folder) 
        -- MOVE THE ITEM TO THE DESTINATION FOLDER 
        set the target_file to (move this_item to the target_folder with replacing) as alias 
       end tell 
       -- PROCESS THE ITEM 
       process_item(target_file) 
      end if 
     end repeat 
    on error error_message number error_number 
     if the error_number is not -128 then 
      tell application "Finder" 
       activate 
       display dialog error_message buttons {"Cancel"} default button 1 giving up after 120 
      end tell 
     end if 
    end try 
end adding folder items to 

on resolve_conflicts(this_item, target_folder) 
    tell application "Finder" 
     set the file_name to the name of this_item 
     if (exists document file file_name of target_folder) then 
      set file_extension to the name extension of this_item 
      if the file_extension is "" then 
       set the trimmed_name to the file_name 
      else 
       set the trimmed_name to text 1 thru -((length of file_extension) + 2) of the file_name 
      end if 
      set the name_increment to 1 
      repeat 
       set the new_name to (the trimmed_name & "." & (name_increment as string) & "." & file_extension) as string 
       if not (exists document file new_name of the target_folder) then 
        -- rename to conflicting file 
        set the name of document file file_name of the target_folder to the new_name 
        exit repeat 
       else 
        set the name_increment to the name_increment + 1 
       end if 
      end repeat 
     end if 
    end tell 
end resolve_conflicts 

-- this sub-routine processes files 
on process_item(this_item) 
    -- NOTE that the variable this_item is a file reference in alias format 
    -- FILE PROCESSING STATEMENTS GOES HERE 
    try 
     -- convert alias reference to string 
     set this_item to this_item as string 
     with timeout of 900 seconds 
      tell application "Image Events" 
       launch -- always use with Folder Actions 
       set this_image to open file this_item 
       scale this_image to size target_height 
       save this_image with icon 
       close this_image 
      end tell 
     end timeout 
    on error error_message 
     tell application "Finder" 
      activate 
      display dialog error_message buttons {"Cancel"} default button 1 giving up after 120 
     end tell 
    end try 
end process_item 
+0

事實上,它是在網絡上共享的文件夾*不應該引起任何麻煩。你確定你將腳本作爲文件夾操作正確地附加了嗎? – fanaugen 2012-04-06 14:05:47

回答

0

我只是測試你的腳本在下降1個圖像的文件夾來了,而且事實證明它會重複運行,因爲生成的(調整大小)圖像也會添加到該文件夾​​中。下面是它看起來像一個幾秒鐘後,我纔打斷了它:

recursive images

你應該看看裏面/Library/Scripts/Folder Action Scripts默認的圖像處理腳本,並可能使用其中一個作爲模板。他們基本上使用一個子文件夾處理圖像,幷包含一些可能有用的文件名衝突解決功能。

+0

謝謝。這正是我所能做到的。我已經將工作腳本發佈到了我的問題上。 – 2012-04-06 14:51:28

相關問題