Script for saving GIF with Animation Loop Endless

Hi,
I am searching for a way to use  "save for web" in a Photoshop CC Script.
I already found how to use the "save for web" using Script, but now i am stuck, because i cannot find any information on how to set
that the animation, i want to save as a Animated GIF File, can be set to loop endless.
I already tried to search in all the docs i found about scripting, but there is not a single information about saving gif with animation loop endless...
thanks,
Philipp

When you do use "save for web" and select GIF, on the bottom right, the loop mode can be selected. But i think i wouldn't matter to me if it's being set before saving the image.
I already tried to run the script, but somehow
"charIDToTID('Ordn')" for example won't run. Is this the same as charIDToTypeID? because i found charIDToTypeID is a function, but charIDToTID is not...
also the third line from the end, one of the functions seem not to work, i think....
But already you given me a real good answer to what i may try to search for, since i did not actually know that this is set within the timeline, i always used the option within the "save for web" dialog on the bottom-right.
I Solved my own problem ...
I just made Photoshop CC with a script log everything, then gotten to this:
function setLoopForever() {
var idsetd = charIDToTypeID( "setd" );
    var desc5 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
        var ref2 = new ActionReference();
        var idanimationClass = stringIDToTypeID( "animationClass" );
        var idOrdn = charIDToTypeID( "Ordn" );
        var idTrgt = charIDToTypeID( "Trgt" );
        ref2.putEnumerated( idanimationClass, idOrdn, idTrgt );
    desc5.putReference( idnull, ref2 );
    var idT = charIDToTypeID( "T   " );
        var desc6 = new ActionDescriptor();
        var idanimationLoopEnum = stringIDToTypeID( "animationLoopEnum" );
        var idanimationLoopType = stringIDToTypeID( "animationLoopType" );
        var idanimationLoopForever = stringIDToTypeID( "animationLoopForever" );
        desc6.putEnumerated( idanimationLoopEnum, idanimationLoopType, idanimationLoopForever );
    var idanimationClass = stringIDToTypeID( "animationClass" );
    desc5.putObject( idT, idanimationClass, desc6 );
executeAction( idsetd, desc5, DialogModes.NO );
Works perfect!

Similar Messages

  • Problem with animation loop in AS3

    I'm having a problem doing an animation loop (a walk cycle in
    this case) in CS3. I never had this problem in Studio 8 and am
    wondering if I've gone crazy or if something has changed in CS3.
    The animation cycle works fine so long as I have it loop
    without using ActionScript, but when I try to loop it using
    gotoAndPlay it skips the last frame (i.e., the frame that the code
    is on). I tried adding an extra frame at the end and placing the
    code on it... it works a bit better, but there's still a bit of odd
    timing during the looping.
    Interestingly, when I save the fla as a Studio 8 file, it
    works fine (if I include that extra frame at the end). I may be
    misremembering, but it seemed to me that Studio 8 didn't require
    that extra frame before CS3.
    Has anyone else seen this? Anyone have a solution to share
    (I'm planning to use ActionScript3, so saving as Studio 8 won't
    solve my problems)?

    Sim-Enzo,
    > Interestingly, when I save the fla as a Studio 8 file,
    it works
    > fine (if I include that extra frame at the end). I may
    be
    > misremembering, but it seemed to me that Studio 8 didn't
    > require that extra frame before CS3.
    It shouldn't require that extra frame, but I wonder if
    you've somehow
    configured your FLA's publish settings for a version of
    ActionScript you're
    not actually using.
    > Has anyone else seen this? Anyone have a solution to
    share
    > (I'm planning to use ActionScript3, so saving as Studio
    8
    > won't solve my problems)?
    If your file works fine in Flash 8, then you must be using
    ActionScript
    2.0 (or lower) for the time being. Based on what you've
    described, I can't
    imagine what's going awry. Can you make that FLA available
    online
    somewhere? See if you can reproduce this issue with a
    simplified version,
    in case your company's policies (or whatever reason(s)) keep
    you from
    uploading the real file somewhere.
    I'll take a look.
    David Stiller
    Adobe Community Expert
    Dev blog,
    http://www.quip.net/blog/
    "Luck is the residue of good design."

  • Script for saving png

    Is there way to make a script that says: open the save dialog box,
    but with the png format already selected ? or with the last format saved selected.. ?
    Because I need to save a lot of png's one after another with diffrent names,
    but all png's and it's always set to psd...
    Thank's!

    Do you need to make it an interactive save why not just save the png file without a dialog at all if you know the file name you want.
    Beeing lazy I just did a save as PNG and captured the scriptlistener code here is an interactive save as you could make a funcrion out of it. Replace the hard coded path for my desktop with a path var.
    // =======================================================
    var idsave = charIDToTypeID( "save" );
        var desc48 = new ActionDescriptor();
        var idAs = charIDToTypeID( "As  " );
            var desc49 = new ActionDescriptor();
            var idPGIT = charIDToTypeID( "PGIT" );
            var idPGIT = charIDToTypeID( "PGIT" );
            var idPGIN = charIDToTypeID( "PGIN" );
            desc49.putEnumerated( idPGIT, idPGIT, idPGIN );
            var idPNGf = charIDToTypeID( "PNGf" );
            var idPNGf = charIDToTypeID( "PNGf" );
            var idPGAd = charIDToTypeID( "PGAd" );
            desc49.putEnumerated( idPNGf, idPNGf, idPGAd );
        var idPNGF = charIDToTypeID( "PNGF" );
        desc48.putObject( idAs, idPNGF, desc49 );
        var idIn = charIDToTypeID( "In  " );
        desc48.putPath( idIn, new File( "C:\\Documents and Settings\\Mr Mouse\\Desktop" ) );    //  my desktop
    executeAction( idsave, desc48, DialogModes.ALL);                                                           // ALL opens the dialog 

  • I need an action/script for image resizing with a "special" attribute

    Having a headache, nothing work so far the way I want it...
    So here's the deal: I have a bunch of psd files and I need them saved as jpegs in a fixed size - 450x590px.
    The filename of the jpeg should be the same as each psd and the images should be resized proportionate.
    The psds have irregular sizes, some are tall, some are square, some are wide, etc.
    I tried using the place function on a template, but that requires my input - choose what to place, then type the filename.
    Any ideas?
    Thank you for your input!

    elmoldovano wrote:
    So here's the deal: I have a bunch of psd files and I need them saved as jpegs in a fixed size - 450x590px.
    The filename of the jpeg should be the same as each psd and the images should be resized proportionate.
    The psds have irregular sizes, some are tall, some are square, some are wide, etc.
    I tried using the place function on a template, but that requires my input - choose what to place, then type the filename.
    So have both Portrait and Landscape images with varying size. and want to create jpeg from them that are 450x590 pixels in size.  Can the have Portrait and Landscape orientations.  If they all must be Portraits 450px wide by 590px high  your landscape images composition will not fair well.  For cropping landscape image to portraits image normally crops away  to much image content.   Content aware scale may work somewhat better then cropping to portrait the introduced distortion may be acceptable.
    If Portrait 450x590px and Landscape 590x450px is an acceptable solution.  I would go with a cropping solution for there will be no distortion and centered crop composition are usually acceptable.   It can also be done with a two step action used by an image processor script.  If you download my crafting action package. It has a plug-in script that can be recorded in an action to set a 45:59 centered aspect ratio selection which you follow with an Image Crop step.  You run the Image Processor  script have the action make the crop and the Image processor to resize the crop to fit into a 590x590px area.
    Crafting Actions Package UPDATED Aug 14, 2012 Changed AspectRatioSelection Plug-in script added Path support.
    Contains
    Action Actions Palette Tips.txt
    Action Creation Guidelines.txt
    Action Dealing with Image Size.txt
    Action Enhanced via Scripted Photoshop Functions.txt
    CraftedActions.atn Sample Action set includes an example Watermarking action
    Sample Actions.txt Photoshop CraftedActions set saved as a text file.
    12 Scripts for actions
    Example
    Download

  • Swapping static gifs with animated gifs

    Hi
    I am currently developing a large application. I created a toolbar with many button functions. The buttons are created as image icons. I created the gifs using Fireworks for the toolbar. A couple are animated as I would like to have the static image swapped with the animated image when the button is passed over with the mouse. Currently the animation will loop no matter where the mouse is which can be quite annoying to the user. Separate sample code follows:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class AnimationTest extends JFrame
         JToolBar toolbar;
         JButton btnSave, btnRestore;
         public AnimationTest()
              toolbar = new JToolBar();
              btnSave = new JButton(new ImageIcon("btnSaveAnim.gif"));
              toolbar.add( btnSave );
              btnRestore = new JButton( new ImageIcon( "btnRestoreAnim.gif" ));
              toolbar.add( btnRestore );
              getContentPane().add( toolbar, BorderLayout.NORTH );
              addWindowListener( new WinClosing() );
              setBounds( 100, 100, 100, 100 );
              setVisible( true );
         public static void main( String args[] )
              AnimationTest at = new AnimationTest();
    class WinClosing extends WindowAdapter
         public void windowClosing( WindowEvent we )
              System.exit(0);
    }How can I create a rollover event when the static gif is passed over with the mouse?
    Any suggestion would be greatly appreciated. Thanks.
    Greg

    I had the same problem and the setRolloverEnabled(true) and setRollOverIcon(Icon) methods did nothing. The problem is solved by simply adding mouse listeners to each button and using mouseEntered(MouseEvent e) and mouseExited(MouseEvent E) methods within th elistener.
    It was the only way I could get it working.
    Good luck.

  • Script for saving/replacing .png´s

    For Photoshop CS5:
    Hi,
    I need a script, which allows me to take the .png file i am working on, and save and replace it in the existing location with the exact same name:
    Without creating the "copy.png" string and preferebly without have to choose "Interlaced" or "None".
    That would be a huge time saver!

    What kind of png – png8 or png24?
    Save for Web or Save as?
    I suppose one might be able to get that information from the file, but it would be easier if one could omit that and just assume one kind of saving process for all files.
    And if you do Layers stuff that can not be saved as png you would nonetheless be asked whether to save the layered file on closing, I guess.

  • Batch load script for Order Management with Oracle R12 EBS

    Hello,
    I am looking for a way to load a million dummy test records into Order Management. For example, I would like to automate a batch process to generate a million new sales orders for Oracle 12.1.1 EBS on Linux platform. If anyone has an idea on how to script this, would appreciate your help.

    Two questions:
    1. How would I modify the following script to generate a million new orders for OM:
    2. How can I register and create a concurrent program with the script?
    SET SERVEROUTPUT ON;
    DECLARE
    v_api_version_number NUMBER := 1;
    v_return_status VARCHAR2(2000);
    v_msg_count NUMBER;
    v_msg_data VARCHAR2(2000);
    -- IN Variables --
    v_header_rec oe_order_pub.header_rec_type;
    v_line_tbl oe_order_pub.line_tbl_type;
    v_action_request_tbl oe_order_pub.request_tbl_type;
    v_line_adj_tbl oe_order_pub.line_adj_tbl_type;
    -- OUT Variables --
    v_header_rec_out oe_order_pub.header_rec_type;
    v_header_val_rec_out oe_order_pub.header_val_rec_type;
    v_header_adj_tbl_out oe_order_pub.header_adj_tbl_type;
    v_header_adj_val_tbl_out oe_order_pub.header_adj_val_tbl_type;
    v_header_price_att_tbl_out oe_order_pub.header_price_att_tbl_type;
    v_header_adj_att_tbl_out oe_order_pub.header_adj_att_tbl_type;
    v_header_adj_assoc_tbl_out oe_order_pub.header_adj_assoc_tbl_type;
    v_header_scredit_tbl_out oe_order_pub.header_scredit_tbl_type;
    v_header_scredit_val_tbl_out oe_order_pub.header_scredit_val_tbl_type;
    v_line_tbl_out oe_order_pub.line_tbl_type;
    v_line_val_tbl_out oe_order_pub.line_val_tbl_type;
    v_line_adj_tbl_out oe_order_pub.line_adj_tbl_type;
    v_line_adj_val_tbl_out oe_order_pub.line_adj_val_tbl_type;
    v_line_price_att_tbl_out oe_order_pub.line_price_att_tbl_type;
    v_line_adj_att_tbl_out oe_order_pub.line_adj_att_tbl_type;
    v_line_adj_assoc_tbl_out oe_order_pub.line_adj_assoc_tbl_type;
    v_line_scredit_tbl_out oe_order_pub.line_scredit_tbl_type;
    v_line_scredit_val_tbl_out oe_order_pub.line_scredit_val_tbl_type;
    v_lot_serial_tbl_out oe_order_pub.lot_serial_tbl_type;
    v_lot_serial_val_tbl_out oe_order_pub.lot_serial_val_tbl_type;
    v_action_request_tbl_out oe_order_pub.request_tbl_type;
    BEGIN
    DBMS_OUTPUT.PUT_LINE('Starting of script');
    -- Setting the Enviroment --
    mo_global.init('ONT');
    fnd_global.apps_initialize ( user_id => 123
    ,resp_id => 456
    ,resp_appl_id => 789);
    mo_global.set_policy_context('S',785);
    -- Header Record --
    v_header_rec := oe_order_pub.g_miss_header_rec;
    v_header_rec.operation := oe_globals.g_opr_create;
    v_header_rec.order_type_id := 1005;
    v_header_rec.sold_to_org_id := 7157;
    v_header_rec.ship_to_org_id := 5480;
    v_header_rec.invoice_to_org_id := 5181;
    v_header_rec.order_source_id := 0;
    v_header_rec.booked_flag := 'N';
    v_header_rec.price_list_id := 7018;
    v_header_rec.pricing_date := SYSDATE;
    v_header_rec.flow_status_code := 'ENTERED';
    v_header_rec.cust_po_number := '99478222532';
    v_header_rec.sold_from_org_id := 83;
    v_header_rec.salesrep_id := -3;
    v_header_rec.transactional_curr_code:= 'GBP';
    v_action_request_tbl (1) := oe_order_pub.g_miss_request_rec;
    -- Line Record --
    v_line_tbl (1) := oe_order_pub.g_miss_line_rec;
    v_line_tbl (1).operation := oe_globals.g_opr_create;
    v_line_tbl (1).inventory_item_id := 27893;
    v_line_tbl (1).ordered_quantity := 1;
    v_line_tbl (1).unit_selling_price := 2000;
    v_line_tbl (1).calculate_price_flag := 'Y';
    DBMS_OUTPUT.PUT_LINE('Starting of API');
    -- Calling the API to create an Order --
    OE_ORDER_PUB.PROCESS_ORDER (
    p_api_version_number => v_api_version_number
    , p_header_rec => v_header_rec
    , p_line_tbl => v_line_tbl
    , p_action_request_tbl => v_action_request_tbl
    , p_line_adj_tbl => v_line_adj_tbl
    -- OUT variables
    , x_header_rec => v_header_rec_out
    , x_header_val_rec => v_header_val_rec_out
    , x_header_adj_tbl => v_header_adj_tbl_out
    , x_header_adj_val_tbl => v_header_adj_val_tbl_out
    , x_header_price_att_tbl => v_header_price_att_tbl_out
    , x_header_adj_att_tbl => v_header_adj_att_tbl_out
    , x_header_adj_assoc_tbl => v_header_adj_assoc_tbl_out
    , x_header_scredit_tbl => v_header_scredit_tbl_out
    , x_header_scredit_val_tbl => v_header_scredit_val_tbl_out
    , x_line_tbl => v_line_tbl_out
    , x_line_val_tbl => v_line_val_tbl_out
    , x_line_adj_tbl => v_line_adj_tbl_out
    , x_line_adj_val_tbl => v_line_adj_val_tbl_out
    , x_line_price_att_tbl => v_line_price_att_tbl_out
    , x_line_adj_att_tbl => v_line_adj_att_tbl_out
    , x_line_adj_assoc_tbl => v_line_adj_assoc_tbl_out
    , x_line_scredit_tbl => v_line_scredit_tbl_out
    , x_line_scredit_val_tbl => v_line_scredit_val_tbl_out
    , x_lot_serial_tbl => v_lot_serial_tbl_out
    , x_lot_serial_val_tbl => v_lot_serial_val_tbl_out
    , x_action_request_tbl => v_action_request_tbl_out
    , x_return_status => v_return_status
    , x_msg_count => v_msg_count
    , x_msg_data => v_msg_data
    DBMS_OUTPUT.PUT_LINE('Completion of API');
    IF v_return_status = fnd_api.g_ret_sts_success THEN
    COMMIT;
    DBMS_OUTPUT.put_line ('Order Import Success : '||v_header_rec_out.header_id);
    ELSE
    DBMS_OUTPUT.put_line ('Order Import failed:'||v_msg_data);
    ROLLBACK;
    FOR i IN 1 .. v_msg_count
    LOOP
    v_msg_data := oe_msg_pub.get( p_msg_index => i, p_encoded => 'F');
    dbms_output.put_line( i|| ') '|| v_msg_data);
    END LOOP;
    END IF;
    END;
    /

  • Tween or Motion path for blank keynote with animated stars?

    I create star particle effect from this tutorial: http://www.schoolofflash.com/2008/03/flash-cs3-particle-effect/ and got help from this discussion: http://forums.adobe.com/message/5518425 in order to get what I wanted. My code is:
    var starsArray:Array = new Array();
    var myTimer:Timer = new Timer(50);
    myTimer.addEventListener(TimerEvent.TIMER, addStars);
    myTimer.start();
    addEventListener(Event.ENTER_FRAME, moveStars);
    function addStars(e:TimerEvent):void
              var star:Stars = new Stars();
              star.x = stage.stageWidth / 2;
              star.y = stage.stageHeight / 2;
              star.alpha = Math.random() * .8 + .2;
              star.scaleX = star.scaleY = Math.random() * .8 + .2;
              star.xMovement = Math.random() * 10 - 5;
              star.yMovement = Math.random() * 10 - 5;
              starsArray.push(star);
              addChild(star);
              star.cacheAsBitmap = true;
    function moveStars(e:Event):void
              for each (var star:MovieClip in starsArray)
                        star.x += star.xMovement;
                        star.y += star.yMovement;
                        star.alpha -= .01;
                        star.scaleX = star.scaleY -= .01;
                        if (star.scaleX <= 0)
                                  kill(star);
    function kill(star:MovieClip):void
              starsArray.splice(starsArray.indexOf(star), 1);
              removeChild(star);
    However, I wanted to move the star particles around. The problem is that the star isn't on the screen, but is called in the actions in the blank keynote. I don't know what I should do next to get the result. I looked up online for tweens and motion paths but all i see is that they required the star to be right on the screen, I think? I also heard something about the compiled clip but I don't know how I should go about creating one and using it to move around the stars while it's animated with all the actionscript. All I wanted is for the star particles to float around the screen (on a path that I can draw out if possible).....

    Each star is created in the addStars function. Its position is set in the first two lines:
         star.x = stage.stageWidth / 2;
         star.y = stage.stageHeight / 2;
    So, to move each star to a new location when it appears on the stage, you'll need to change the x and y property values for each star. One simple way to do that is to use that same Math.random() function.
    Try changing those first two line to:
              star.x = Math.random() * stage.stageWidth;
              star.y = Math.random() * stage.stageHeight;

  • Is there a fix for a problem with animation using nested graphics (parent/child)?

    I am not sure if its because of my lack of experience with 2D programs or not, however I am having issues with nested graphics and animation. I am normally a 3D user and as such grouping and parents are very key to how things are able to move. The problem I am having (just as an example because its hapening in multiple areas) is I have an arm of a character that is grouped 3 times. The upper arm is the parent, the lower arm is grouped inside the upper arm, and the hand grouped inside that, all of which were converted to graphics. I did this so the lower arm and hand follow the upper arm, and the hand follows the lower arm. This would be a common sense thing to do in 3D however when it comes to animating the hand, usually when double clicking a graphic it takes you to the same frame for the child as is selected with the parent (if the parent is on frame 20, double clicking the parent should take you to frame 20 of the child). I should also add that all graphics have the same frame count.  The problem being when i double click, the child does not have the same frame count and throws off everything done to the child in relation to the parent's animation. I am not sure if its something i did, or a problem that exists inside flash. I have a deadline coming up and this has been a bad problem to have last minute so if anyone has advice on the matter, that would be greatly appreciated!
    I also tried using the bone tool in flash, and besides no obvious way of re-adjusting the bones that are attached to the graphics (short of deleting them and trying again), this was difficult as well. I looked up ways to adjust the position and it seems you can only adjust the graphics themselves, not the bones. Normally this wouldn't be a big deal if it didn't start skewing the graphics out of place randomly. 
    I hope this isn't too confusing and I would certainly appreciate some feedback!

    Would you mind reposting this question over on the Flash Professional forums?  This forum is primarily for end users, the Pro forums will get you in touch with a wider developer audience.
     

  • Keep alive script for HTTPS service with GET method

    Hello,
    I tried to implement a keep alive to services that support HTPS connections. I’ve created a script that opens a tcp connection on port 443 and tries to do a GET of a test web page. This web page only displays “OK”.
    In a resumed form I used the following script commands:
    Socket connect host 192.168.136.134 port 443 tcp
    Socket send ${SOCKET} “GET /teste.template\n\n”
    Socket waitfor ${SOCKET}” 200 “ 2000
    Socket disconnect ${SOCKET} graceful
    I was unable to receive the expected “ 200 “response and received a message saying string not found, I used the socket inspect command to inspect the socket’s internal data buffer and the result was nothing, it seemed empty.
    I tried the same operation using a linux machine that has IP connectivity with the Webservers and I was successful.
    In the same CSS I have services configured to respond to HTTP sessions. I tried the following script and everything went well
    Socket connect host 192.168.136.151 port 80 tcp
    Socket send ${SOCKET} “HEAD /index.html\n\n”
    Socket waitfor ${SOCKET}” 200 “ 2000
    Socket disconnect ${SOCKET} graceful
    When I issued the socket inspect command I could in fact see the socket’s internal data buffer content.
    The CSS is running WebNS 5.0 build 66
    Can someone give me a help?
    Thanks,
    Ricardo Lourenço

    Hello,
    There is no direct no direct link between TCP and SSL.
    So, in spite of having success with the TCP port 443 connection the CSS will not be able to negotiate de security parameters necessary to establish the SSL session.
    This was the reason for not having success through the use of the socket commands, as i refered in my original message.
    Thanks for your collaboration,
    Ricardo Lourenço

  • Script for internet connect with dial up modem, check email & log off

    I am looking for a script to connect to the internet (with dial up) external apple modem, then check email and then log off and disconnect. I don't want any other applications opening internet connect? A would use this script file with ical and could have my email checked and open up in the morning before I leave for work....being that we have dial up the entire process of connecting to the internet and checking email is time consuming. Any help is greatly appreciated. thks

    You need some additional logic in there - as written, the script will launch mail, then immediately disconnect the internet connection.
    At the very least you need to add a delay before disconnecting to allow for Mail to download awaiting messages.
    Since you cannot predict how long a delay you'll need, a better approach would be to query Mail.app and wait until it's idle, like:
    tell application "Mail"
      launch -- doesn't need to be frontmost
      check for new mail -- get all mail
      repeat until (get background activity count) = 0
        delay 2 -- wait 2 seconds before checking again
      end repeat
    end tell
    In this way the script forces a check of new mail (don't assume that Mail.app is set to auto-check, especially for dialup users who often compose mail offline and may have automatic checking disabled), and it hangs around until Mail.app has finished downloading all the messages.

  • Taking too much time for saving PO with line item more than 600

    HI
    We are trying to save PO with line items more than 600, but it is taking too much time to save. It is taking more than 1 hour to save the PO.
    Kindly let me know is there any restriction for no. of line items in the PO. Pls guide
    regards
    Sanjay

    Hi,
    I suggest you to do a trace (tcode ST05) to identify the bottleneck.
    You can know some reasons in Note 205005 - Performance composite note: Purchase order.
    I hope this helps you
    Regards
    Eduardo

  • Adobe forms - script for dollar amounts with no decimal?

    I have several forms where the decimal is already on the form (think Tax Form).  I want to be able to set to a number format with 2 decimal places, but I do not want the decimal to show.  Not all of the text placed will have cents amounts, and I need to have the field combed to allow it to show up correctly in the field.

    Then you need to use the validation script or custom calculation script to round or truncate the inputted data as necessary.
    You can use JavaScirpts 'Math.floor()' method to truncate the cents or you can round using JavaScript's 'Math.round()' method or Acrobat JavaScript's 'util.printf()' method to round the inputted value.

  • Script for saving images

    How would one create a script that can be inserted in my contextual menu or on my browser toolbar allowing me to save something (usually an image) to a specific directory.
    I want to eventually automate converting the image and resizing in one fail swoop but for now I do this via folder actions in said directory.

    Are you looking to "one-click" to save an image displayed on a webpage to a pre-determined directory?

  • How to save expression together with animation preset?

    I am trying to understand expressions and animation presets.
    I have one single slider control, which controls the opacity of a layer, where the value is the slider value + slightly changed using an expression.
    I can save the slider control as an animation preset, but the expression gets lost.
    Yes, this is so basic that it can be, this is the way I like to learn. And as far as I know, expressions can be saved together with animation presets. I hope someone can tell me how!

    The reason that the expression is not removed when you delete the slider is that the expression is only reading the slider value, the slider doesn't know that the expression is there. There's no reverse link.
    You can build more professional effects but that involves editing the xml file that tells AE what effects are applied. This still would not generate a reverse link to an expression.
    Enabling or disabling an effect only changes the way things are rendered. If you have keyframes on a Lens Flair Brightness and you disable the effect the Lens Flair will not render but the keyframe values will still be available to an expression. Again, there's no reverse link. Since an expression slider does not make a change in the pixel values of a layer turning the FX switch on or off will have no effect on an expression reading the value.
    The "trick" in creating an Animation Preset that uses expressions and is removed with the "effect" is removed from the Effects Control Window is to only write expressions for properties that are available in the effects used. You could do this by applying the Transform Effect, or the Levels Individual Controls Effect, or the CC Composite Effect to the layer and writing the expression there instead of placing your expression in the Layer's opacity property. Take a look at this screenshot.

Maybe you are looking for