2012-04-05 50 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

相关问题