IPhone : Scale image in a memory efficient way?

Greetings-
I am trying to find the most efficient way to scale down an image captured with the camera and UIImagePickerController. As far as I can see with Allocations Instrument, any way I scale it down seems to shoot the memory footprint up 20mb (the uncompressed byte size of the iPhone 4 camera image in RGBA). That is the case even when (for an experiment) I tried scaling down to a 5x5 pixel destination image. This seems to indicate that the source image is being copied in order to scale down.
Here are the two methods I've tried so far, both causing a spike:
UIGraphicsBeginImageContextWithOptions(CGSizeMake(5,5), YES, 1.0);
[pickedImage drawInRect:CGRectMake(0.0, 0.0, 5,5)];
newImage= UIGraphicsGetImageFromCurrentImageContext();
[newImage retain];
UIGraphicsEndImageContext();
UIGraphicsBeginImageContextWithOptions(CGSizeMake(w*0.1929, h*0.1929), YES, 1.0);
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextClearRect(c, CGRectMake(0,0,w*0.1929, h*0.1929));
CGContextDrawImage(c, CGRectMake(0,0,w*0.1929, h*0.1929), [pickedImage CGImage]);
newImage = [(UIImage*)UIGraphicsGetImageFromCurrentImageContext() retain];
UIGraphicsEndImageContext();
If I comment out the scaling, the memory peaks around 12mb, so I don't think its just a symptom of using the image in the image picker delegate... Is there a way to scale down an image without this drastic memory spike?
Thanks in advance
null

OK, to simplify the question-
Can anyone verify if the 20mb spike I'm seeing after pressing "Use" is somehow the captured image moving from some reserved camera memory into the segment of memory watched by Allocations instrument? Or is my thumbnail scaling actually creating a copy of the original image behind-the-scenes? When I comment out the scaling operation and simply save the original image, I don't see the spike - that's whats confusing me.

Similar Messages

  • Memory efficient conversion of cmyk jpeg to rgb jpeg

    I'm looking for a memory efficient way to convert a jpeg image from cmyk to rgb.
    I can't load the whole image in memory. The image is too big (I already have a lot of ram).
    Do you know how to do it? Would you share it with us?
    At the end of this thread (http://forum.java.sun.com/thread.jspa?messageID=9625078) I show how to do it when loading the whole image in memory. But that's not what I'm looking for. May be you can find a better way to achieve a similar output.

    Can you show me how it would look like? 1. SInce CMYK is 4 bytes per pixel the byte array size is w*h*4 which is bigger than w*h*3, so there is no problem to use the same array.
    As you can see from this line:raster = Raster.createInterleavedRaster(new DataBufferByte(rgb, rgb.length), w, h, w * 3, 3, new int[]{0, 1, 2}, null);You are passing the size of the array to the DataBufferByte constructor and also to the createInterleavedRaster, so you can use an array with bigger size and just pass w*h*3 instread of rbg.length to DataBufferByte constructor.
    2. You can acces the buffer directly instead of using raster.getSamples which creates a new array and places the values in it:
    Instead of this:
    int c = 255 - C;
    int m = 255 - M[i];
    int y = 255 - Y[i];
    int k = 255 - K[i];
    Do this:
    int c = 255 - data[i*4];
    int m = 255 - data[i*4+1];
    int y = 255 - data[i*4+2];
    int k = 255 - data[i*4+3];

  • Most efficient way to insert into a story with many floating images?

    I have a document with many floating images. They must all be floating because otherwise I do not get the Caption numbering right and it is impossible (because some images take an entire page) to use only anchored images.
    Now, I have to insert a large part into the middle / at the beginning of a section. If I do that the text will flow, but the images remain in place. This is extremely slow working because of all teh movements I have to do on all the images. What I would like to do is to let the pages after the page where I am entering remain the same and when I insert text and images this should just move up one page at a time. Then, at the end, I can do the fine tuning of attaching both parts again. Is there a way to do that in an efficient way?
    What I now often do is move all the floating images out of the pages, then insert the new stuff, move the images back, then make sure all the references are fine (e.g. if they refer to an image on another page, the style becomes paragraph number + page numer). For some sections this is a hideous amount of work (many, many images).
    Is there a smarter way. I have been thinking about splitting and later rejoining a section. If I add pages to one section, the following sections are not damaged, after all.
    What is the best way to do this?
    Thanks in advance.

    I have a document with many floating images. They must all be floating because otherwise I do not get the Caption numbering right and it is impossible (because some images take an entire page) to use only anchored images.
    Now, I have to insert a large part into the middle / at the beginning of a section. If I do that the text will flow, but the images remain in place. This is extremely slow working because of all teh movements I have to do on all the images. What I would like to do is to let the pages after the page where I am entering remain the same and when I insert text and images this should just move up one page at a time. Then, at the end, I can do the fine tuning of attaching both parts again. Is there a way to do that in an efficient way?
    What I now often do is move all the floating images out of the pages, then insert the new stuff, move the images back, then make sure all the references are fine (e.g. if they refer to an image on another page, the style becomes paragraph number + page numer). For some sections this is a hideous amount of work (many, many images).
    Is there a smarter way. I have been thinking about splitting and later rejoining a section. If I add pages to one section, the following sections are not damaged, after all.
    What is the best way to do this?
    Thanks in advance.

  • Most efficient way to place images

    I am composing a Catalog with a lot of images along with the text.  The source images are often not square (perfectly vertical, portrait).  I also want to add a thin line frame around each one in InDesign to spurce up the look.  I'm spending a lot of time in Photoshop straightening images, because rotating in Indesign to get the image straight results in a non-straight frame.
    Should I create a small library of frames that I place, then place non-straight images in them (and how do I do that) and rotate in InDesign?  Etc?
    What would be the most efficient way to do this?
    Thanks

    To tag onto what Peter said, when you click on the image with the Direct Selection tool you can also use the up and down arrow in the rotation Dialog (where you enter the angle, at the top) to easily change the rotation.
    Also, when you place images in InDesign you can select a number of images at once and continually click the document (or image frame) and place all the images you selected to import. To clarify, you can have a whole bunch of empty image frames on the page then go to file > place and select all your images, then continually click and place them inside each empty frame.

  • Most efficient way to do multiple crops on many images?

    I have a large number of images shot in the default 4:3 aspect ratio. I need to print almost 200 as 4x6, and and undetermined but certainly large number as 8x10, so I have a lot of cropping to do. What would seasoned Aperture users suggest as the most efficient way to do this? I've thought of two possibilities:
    1. Duplicate every image I need to print in both sizes and crop one for each size print. This is the best option I've thought of, but it would certainly eat a lot of drive space.
    2. Do all the 8x10 crops, revert to original, and do the 4x6 crops. Saves disk space, but leave me with only the 4x6 crop in Aperture. (Sounds like I want to have my cake and eat it too, I suppose.)
    Anyway, there are a lot of you out there who have logged a lot more Aperture hours than I have. Is there a better workflow I have not considered?
    Thanks,
    Ben

    Hello Ben,
    the beauty of Aperture is, that you can have many versions of an image without needing much extra disk space.
    To have three versions of an image cropped to different aspect ratios, don't create duplicate master images but use (from the Aperture main menu)  "Photos -> Duplicate version" or "New Version from Master". Then crop this new version to a different aspect ratio. Aperture will not really render a new image file but just store the cropping rectangle to be able to create the cropped image when you export or print it.
    So you can have an original version, a 8x10 version, a 4x6 version in your library without needing much extra space - that is one of the rare occasions when you can have your cake and eat it too
    Regards
    Léonie

  • Most efficient way of changing still image frame rates?

    I'm using Premiere CS5.5 and have been having issues with the audio/video going out of sync when I upload my video to Vimeo (it's not out of sync prior to uploading it...it only happens after they transcode it). The Vimeo support staff says the problem is that I'm using a variable frame rate, but since there isn't any option (to my knowledge) to choose a constant or variable framerate in Premiere/Adobe Media Encoder, I think I have identified the problem. The primary footage that I shot with is 23.976 fps and that is what my sequence settings and output settings have been, but I also have a lot of still images that I'm using for b-roll, which I finally noticed are 29.97 fps. I changed the Intermediate Media Timebase setting to 23.976 fps in the preferences, but my question now is if there is an efficient way to change the frame rate of all those still images without having to re-import them and re-apply all the various motion effects/key framing that I've already spent a lot of time on?
    Any help would be much appreciated. Thanks.

    Yeah, I downloaded MediaInfo to explore some of the various versions that I've rendered in my effort to get something that works correctly on Vimeo, and depending on the encoder I saw some of what Ann posted, but I also looked at one on MediaInfo that I had rendered through Adobe Media Encoder and it had a Constant frame rate mode of 23.976, yet I remember watching that one on Vimeo at the time and it was still out of sync--Mediainfo says that version has a variable audio bit rate though, but to my knowledge there isn't an option in AME to choose a constant audio bit rate.
    I agree that it's an issue on Vimeo's side, but the chances of them getting their **** together in a timely fashion seem low. The frustrating thing is that I can watch documentary style videos on Vimeo that I know were edited and compressed through Premiere/AME, yet they don't have any audio sync issues. The difference that I noticed between one of those videos and mine is the use of still images in my video. As you can see from an image I uploaded earlier, the default frame rate for still images when I imported them was 29.97 until I changed it yesterday, but it didn't update the images I had already imported. So I'm wondering if there is a way to change the frame rate of those still images without having to re-import the images and make all my edits/key framing all over again.

  • The efficient way to display 100 rendered images?

    Hello, i need your help...
    Do you guys know what is the efficient way to display 100 renderedimages (TiledImage) in a window frame?
    Thank you.
    :)

    a) Create a panel with a GridLayout. create a JLabel
    using the image and add the label to the panel.then add the panel to the JScrollPane, (I assume that the size of the image is the same) then add the JScrollPane to your frame. ^_^

  • Simple and efficient way to display image on jpanel

    AOA
    What may be the simple and efficient way
    to display a strored jpg image on a jpanel in an application.
    i will appreciate more than one ways.
    thanks

    JPanel panel = new JPanel() {
         public void paintComponent(Graphics g) {
                   g.drawImage(......);
    };

  • Problem loading image into texture memory

    Hi there, I am currently porting our new casual PC game over to the iPad using the pfi, the game was written in Flash so the porting process isn't that hard thankfully, it's mainly just optimizing the graphics.
    So far things are going smoothly, I was initially worried about graphical performance, but since we put everything into the GPU that's no longer a concern- it runs super smooth at 60fps at 1024x768, we can have a hundred large bitmaps rotating and alphaing at once with no slowdown.
    However there is one weird problem which is really worrying me at this point- it seems that the speed at which images are loaded into video memory as textures is vastly different depending on what else is being run on the iPad, for example:
    * If I run my game with nothing else in memory, it will run fine at 60fps, and load up large images into texture memory very fast.
    * If I run another App, in this case a Virtual piano app for a while, then close that App via the Home button (so the piano app is still in memory but suspended due to the multitasking), then when I run my game, it will run ok initially, but when I try to load a large (1024x512) image into texture memory it pauses the whole game for several seconds.
    * To make matters worse, if I repeat the same test using the RAGE app from ID software (which is very graphically intense), my game actually slows down to 1 fps and runs extremely slowly as soon as I run it and the frame rate never returns to normal. If I then double-click the home button, shut down RAGE, then go back to my game, it will run fine.
    I have read that sometimes when you load images into texture memory it will have to reclaim that memory from other apps, but that doesnt exaplain why it slows down every time I want to load something, or why the game would slow right down to a crawl.
    So then it seems that having other Apps in memory is slowing down my game, or stopping it from working altogether. Obviously this is not ideal and would stop us from releasing, so is there any way I can stop this, has anyone come across the problem? Please help!
    PS. this problem also happens on an iPhone 4, as I have performed the same tests.

    Hi _mz84
    First thing I noticed, is that you did not close your
    <embed> tag
    <embed src="gallery1.swf" bgcolor="#421628" width="385"
    height="611" wmode="transparent" />
    If that doesn't solve your troubles, try the following
    container.
    <object type="application/x-shockwave-flash" height="611"
    width="385" align="middle" data="gallery1.swf">
    <param name="allowScriptAccess" value="never" />
    <param name="allowNetworking" value="internal" />
    <param name="movie" value="gallery1.swf" />
    <param name="quality" value="high" />
    <param name="scale" value="noscale" />
    <param name="wmode" value="transparent" />
    <param name="bgcolor" value="#421628" />
    </object>
    hope this helps out.

  • Zoom in/out on panel -- efficient way?

    I need a panel to display an image, I want to be able to zoom in/out on that image, and have the panel resized (which would need to adjust the image being shown so that it fills the panel)....below is sort of what I was thinking...but is there a more efficient way?
    public void paint(Graphics g) {
         at =  new AffineTransform();
         int w = getParent().getWidth();
         int h = getParent().getHeight();
         int picW = pic.getWidth();
         int picH = pic.getHeight();
         double newW = ((double) w / (double) picW);
         double newH = ((double) h / (double) picH);
         at.scale(newW, newH);
         ((Graphics2D) g).drawImage(myImage, at, null);
    }Thanks

    1) Don't extent paint(), extend paintComponent()
    2) Keep a local copy of the image in your class. Use Image.getScaledImage()
    whenever the user changes the zoom level to modify your local copy. Have
    paintComponent reference the local copy.
    This way, you're only performing an expensive computation when the zoom
    actually changes, which is relatively infrequent, rather than every time you
    have to repaint, which is relatively often.

  • Most efficient way to delete "removed" photos from hard disk?

    Hello everyone! Glad to have this great community to come to for help. I searched for this question but came up with no hits. If it's already been discussed, I apologize and would love to be directed to the link.
    My wife and I have been using LR for a long time. We're currently on version 4. Unfortunately, she's not as tech-savvy or meticulous as I am, and she has been unknowingly "Removing" photos from the LR catalogues when she really meant to delete them from the hard disk. That means we have hundreds of unwanted raw photo files floating around in our computer and no way to pick them out from the ones we want! As a very organized and space-conscious person, I can't stand the thought. So my question is, what is the most efficient way to permanently delete these unwanted photos from the hard disk
    I did fine one suggestion that said to synchronize the parent folder with their respective catalogues, select all the photos in "Previous Import," and delete those, since they will be all of the photos that were previously removed from the catalogue.
    This is a great suggestion, but it probably wouldn't work for all of my catalogues since my file structure is organized by date (the default setting for LR). So, two catalogues will share the same "parent folder" in the sense that they both have photos from May 2013, but if I synchronize May 2013 with one, then it will get all the duds PLUS the photos that belong in the other catalogue.
    Does anyone have any suggestions? I know there's probably not an easy fix, and I'm willing to put in some time. I just want to know if there is a solution and make sure I'm working as efficiently as possible.
    Thank you!
    Kenneth

    I have to agree with the comment about multiple catalogs referring to images that are mixed in together... and the added difficulty that may have brought here.
    My suggestions (assuming you are prepared to combine the current catalogs into one)
    in each catalog, put a distinctive keyword onto all the images so that you can later discriminate these images as to which particular catalog they were formerly in (just in case this is useful information later)
    as John suggests, use File / "Import from Catalog" to bring all LR images together into one catalog.
    then in order to separate out the image files that ARE imported to LR, from those which either never were / have been removed, I would duplicate just the imported ones, to an entirely separate and dedicated disk location. This may require the temporary use of an external drive, with enough space for everything.
    to do this, highlight all the images in the whole catalog, then use File / "Export as Catalog" selecting the option "include negatives". Provide a filename and location for the catalog inside your chosen new saving location. All the image files that are imported to the catalog will be selectively copied into this same location alongside the new catalog. The same relative arrangement of subfolders will be created there, for them all to live inside, as is seen currently. But image files that do not feature in LR currently, will be left behind by this operation.
    your new catalog is now functional, referring to the copied image files. Making sure you have a full backup first, you can start deleting image files from the original location, that you believe to be unwanted. You can do this safe in the knowledge that anything LR is actively relying on, has already been duplicated elsewhere. So you can be quite aggressive at this, only watching out for image files that are required for other purposes (than as master data for Lightroom) - e.g., the exported JPG files you may have made.
    IMO it is a good idea to practice a full separation of image files used in your LR image library, from all other image files. This separation means you know where it is safe to manage images freely using the OS, vs where (what I think of as the LR-managed storage area) you need to bear LR's requirements constantly in mind. Better for discrete backup, too.
    In due course, as required, the copied image files plus catalog can be moved bodily to another drive (for example, if they have been temporarily put on an external drive, and you want to store them on your main internal one again). This then just requires a single re-browsing of their parent folder's location, in order to correct LR's records inside this catalog, as to the image files' changed addresses.
    If you don't want to combine the catalogs into one, a similar set of operations as above, can be carried out for each separate catalog you have now. This will create a separate folder structure in each case, containing just those duplicated image files. Once this has been done for all catalogs, you can start to clean up the present image files location. IMO this is very much the laborious and inflexible option, so far as future management of the total body of images is concerned... though there may still be some overriding reason for working that way.
    RP

  • Advice needed: Efficient way to scan users

    Hi all,
    I wish to know the efficient way to scan users in Lighthouse. I need to write a workflow that checkout all the users and perform some updates. This workflow should run everyday at midnight.
    I have created a scanner myself. Basically what It did are:
    1. call FormUtils.getUsers method to return all users' name into a variable.
    2. loop through this list and call a subprocess workflow to process every user. This subprocess checks out a user view, performs updates, and then checks in view.
    This solution is not efficient at all since it causes my JVM to be Out of Memory. (1G RAM assigned to JVM with about 78,000 users)
    Any advice is highly appreciated. Thank you.
    Steve

    Ok...I know understand what you are doing and why you need this.
    A long, long, long time ago (back in 3.x days) the deferred task scanner was really bad. Its nightly scan would scan ALL users each time. This is fine when your client had 4k users...but not when it has 140k users.
    Additionally, the "set deferred task" function had problems with two tasks with the same name "i.e. disable resource" since it used the name as the xml object name which can not be duplicated.
    soooo, to beat this I rewrote the deferred task handler to allow me to do all of this. Part of this was to add a searchable field called 'nextTaskDate' on the user object. After each workflow this 'date" is updated so it is always correctly populated with the users "next deferred task date"
    each night the scanner runs and querys all users with a nextTaskDate of today. This then gives us a result set that we can iterate over instead of having to list each user and search for tasks. It's a billion times faster.
    Your best bet is to store the task date in miliseconds and make your query a "all users with next task date BEFORE now"...this way if the server is hosed you can execute tasks you may have missed.
    We have an entire re-usable implmentation framework that we have patented (of which this code is a part) that answers most of these types of issues you are bringing up. It makes these implementations much much simpler, faster, scalable and maintainable.
    this make sense?
    Dana Reed
    AegisUSA
    Denver, CO 80211
    [email protected]
    773.412.3782
    "Now hiring best-in-class IdM architects. Inquire via emai"

  • Efficient way for Continous Creation of XML Content?

    Hi
    I have a requirement of creating xml content from the data extraced from a udp packet.
    As the packet arrives, i have to generate appropriate xml content from them and keep in the same single xml file.
    Problem:
    Since the xml file is not a flat file, i can't just append the new contents at the end. So if i have to write into xml file, Each and Every time i have to parse the content as a packet arrives and insert the new content under appropriate parent. I think this is not the most efficient way.
    Every time parsing the file may affect cpu time and as the file grows in size, the memory will also be a constraint.
    Other options i could think of
    * Hold the XML Document Object in memory until a certain event like timeout for receiving packet and write into the xml file at oneshot.
    * Serialize the objects containing the extracted packet content to a temp file and after some event, parse and create the xml file at oneshot
    Which is the efficient way or is there any design pattern to handle this situation? I am worried about the memory footprint and performance on peak loads
    I am planning to use JDOM / SAX Builder for xml creation.
    Thank you...

    Lot's of "maybe" and "I think" and "I'm worried about" in that question, and no "I have found" or "it is the case that". In short, you're worrying too much about problems you don't even know you have. XML is a verbose format anyway, efficiency isn't paramount when dealing with it. Even modestly powered machines can deal with quite a lot of disk I/O these days without noticeable impact. The most efficient thing you can do here is write something that works, and see if you can live with the performance

  • Most efficient way to use thumbnails of multiple sizes

    When a user submits an image on my website, the upload script
    currently creates thumbnails in three different sizes (120px, 90px,
    and 20px). Different thumbnail sizes are used in different areas of
    the site.
    Is there a more storage-efficient way to display high-quality
    thumbnails in different sizes, without requiring a separate
    thumbnail file for each size used?
    I cannot rely on browsers to resize images as the quality is
    often very undesirable.

    AngryCloud wrote:
    > I may not have been clear in my last post...
    >
    > When an image is viewed normally on a page, it is saved
    to the client's
    > computer so that it will load instantly the next time
    the image is called for.
    >
    > I do not want visitors to have to wait for the same
    images they have already
    > seen to re-download and resample. A file of each
    resampled image should be
    > saved to the client's computer to avoid this.
    >
    >
    Is it possible to save resampled images on a page to the
    client's
    > computer?
    It sounds like your page needs to check whether the cached
    version
    exists before creating the a new image, otherwise its always
    going to
    create a new version of the image and send it to the
    browser... but I
    don't know how this is possible.
    Dooza
    Posting Guidelines
    http://www.adobe.com/support/forums/guidelines.html
    How To Ask Smart Questions
    http://www.catb.org/esr/faqs/smart-questions.html

  • Memory Efficiency of BufferedImage and ImageIO

    This thread discusses the memory efficiency of BufferedImage and ImageIO. I also like to know whether if there's possible memory leak in BufferedImage / ImageIO, or just that the result matches the specifications. Any comments are welcomed.
    My project uses a servlet to create appropriate image tiles (in PNG format) that fits the specification of google map, from images stored in a database. But it only takes a few images to make the system out of heap memory. Increasing the initial heap memory just delays the problem. So it is not acceptable.
    To understand why that happens, I write a simple code to check the memory usage of BufferedImage and ImageIO. The code simply keeps making byte arrays from the same image until it is running out of the heap memory.
    Below shows how many byte arrays it can create:
    1M jpeg picture (2560*1920):
    jpeg = 123
    png = 3
    318K png picture (1000*900):
    jpeg = 1420
    png = 178
    Notice that the program runs out of memory with only 3 PNG byte arrays for the first picture!!!! Is this normal???
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.*;
    import java.awt.geom.*;
    import javax.imageio.*;
    import java.io.*;
    import javax.swing.*;
    import java.util.*;
    public class Test {
         public static void main(String[] args) {
              Collection images = new ArrayList();
              for (;;) {
                   try {
                        BufferedImage img = ImageIO.read(new File("PTHNWIDE.png"));
                        img.flush();
                        ByteArrayOutputStream out =
                             new ByteArrayOutputStream();
                        ImageIO.write(img, "png", out); // change to "jpeg" for jpeg
                        images.add(out.toByteArray());
                        out.close();
                   } catch (OutOfMemoryError ome) {
                        System.err.println(images.size());
                        throw ome;
                   } catch (Exception exc) {
                        exc.printStackTrace();
                        System.err.println(images.size());
    }

    a_silent_lamb wrote:
    1. For the testing program, I just use the default VM setting, ie. 64M memory so it can run out faster. For server, the memory would be at least 256M.You might want to increase the heap size.
    2. Do you mean it's 2560*1920*24bits when loaded? Of course.
    That's pretty (too) large for my server usage, Well you have lots of image data
    because it will need to process large dimension pictures (splitting each into set of 256*256 images). Anyway to be more efficient?Sure, use less colors :)

Maybe you are looking for

  • Down Payment Clearing push button not showing in MIRO

    Dear SAP Guru, I already activated "LOG_MMFI_P2P" using SFW5. Now we are getting Down Payment option in ME21N but we are not getting down payment push button in MIRO. We are doing in that way: First we created PO. We do not provide any down payment i

  • Converting a BufferedImage to an Image

    I have a program with some BufferedImages that the user needs to be able to drag around the screen. 1) The dragging process is very sluggish when I use BufferedImages, but not when I use normal Images. Is this normal, or is something wrong with my pr

  • Solaris 8 solaris 7 system file includes

    Hello, I would like to get the header files from /usr/include/sys/*.h of a solaris 7 or previous OS, and copied them on a solaris 8. (on ultra sparc). Where can I find those headers? What are the risks to do this? Thank all in advance.

  • XQuery using fn:QName in OSB

    Is fn:QName available to use in XQuery within the OSB? I tried but keep get the following error message... line 5, column 10: {err}XQ0017: "{http://www.w3.org/2004/07/xpath-functions}QName": unknown function (or number of arguments (2) is wrong) My x

  • Adjust Image Won't work

    Hi: I'm New to Keynote and I started to work with it and when I go to adjust an image nothing happens. Its like the controls are all frozen...Its strange because I have iPhoto too and all of the image adjust controls disappeared for that. Anyway, any