Delete an ALAsset - iphone

I'm using a photo viewer and i wan't to implement a trash button.
I already have the button ready and everything is good to go but the following:
How do I actually delete the ALAsset??
I tried searching in many places but couldn't find an answer...
Thanks,
For some reason i'm not allowed to post this question so i'm adding an irrelevant code of my trash button:
UIBarButtonItem *trash = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:#selector(trashButtonHit:)];

You can't delete an ALAsset, there is no API for this.
An ALAsset is link to a file in the Photo library, which is outside of the sandbox of your app. The assets library allows you the acces the file in the photo library but they are read only.

ALAssets are not read only:
editable
Indicates whether the asset is editable. (read-only)
#property(nonatomic, readonly, getter=isEditable) BOOL editable
And the documentation goes on to describe how to edit an ALAsset (your app must have created it). But the documentation offers no 'delete'. This is kind of silly, as your app could edit the photo down to a 1x1 px image, or a 'skull and crossbones', etc.
I think what happens is that Apple saves the original, so you can't delete the image, only edit it.
I can see what Apple is driving at - they don't want Applications to delete photos and 'surpise' the user. But some applications might want to have their own editing facilities, including a trash can.
The answer, then is to recreate the entire camera roll interface in your own app, and store images in your own storage.

Related

Is it possible to avoid the "use"/"retake" screen after taking a photo in an iOS app?

i have hired a programmer to create an iPhone app for me. The purpose of the app is to take a photo and upload it to a server. We want to make a special purpose screen to review the photo before uploading it. This specially developed screen will crucially have zooming functionality.
He claims that after taking a photo, it is impossible to avoid the "use"/"reuse" screen to show up, so now we have two screens to review the photo. First the standard one from Apple, then our own with zoom. Is he right about that? It just sounds so unreasonable that Apple would put such a restriction.
Edit: I mean taking a photo using the camera.
As par Apple's documentation
To perform fully-customized image or movie capture, instead use the AV
Foundation framework as described in “Media Capture and Access to
Camera” in AV Foundation Programming Guide. To create a
fully-customized image picker for browsing the photo library, use
classes from the Assets Library framework. For example, you could
create a custom image picker that displays larger thumbnail images,
that makes use of EXIF metadata including timestamp and location
information, or that integrates with other frameworks such as Map Kit.
For more information, see Assets Library Framework Reference. Media
browsing using the Assets Library framework is available starting in
iOS 4.0
In short yes it is possible check out this sample
[Update]
Use the allowsEditing property on your UIImagePickerController
imagePickerController.allowsEditing = NO;
Previous answer was a bit of a hack to take advantage of a code path that didn't show the buttons but wasn't awesome.
[Previous answer]
You can actually avoid it without going through the hassle of setting up your own image capture from AV Foundation.
Including the following will remove the need to show the "review" screen. All you have to do is put in a few of your own buttons and wire them up to the appropriate functionality.
[self.imagePickerController setShowsCameraControls:NO];
It is a little bit too late I know, but for future reference:
This is far more simple that the answers already provided,
what you are looking for is the allowsEditing option.
imagePickerController.allowsEditing = NO;
That should be enough to avoid showing the "Retake"/"Use" screen after the user takes a picture.

Photo browser with previous and next button , how?

I want to make a gallery with previous and next button in my iPhone app.
If anyone has idea , link , exampler or something that lead me to implement the gallery please provide me .
I've written a simple and easy to use photo browser called MWPhotoBrowser. I decided to create it as Three20, while very good, was too heavy/bloated as all I needed was a photo viewer.
It is an implementation of a photo viewer that I wrote allowing the user to view one or more images in a similar way to the native Photos app. It can display one or more images by providing either UIImage objects, file paths to images on the device, or URLs images online. Photos can also be zoomed, panned, and navigated with previous/next buttons.
View MWPhotoBrowser on GitHub
Hope this helps!
Thee20 framework, they have a great gallery example

Linking to selected photos

If I allows users to select photos and need to store those selections (in a database), can I store a link to the selected photo or do I need to grab the image and store it in the app's Documents folder? The latter doesn't seem practical since it will cause the image to neednessly take up double the amount of space.
I'm familiar with UIImagePickerControllerDelegate but not sure how to obtain a reliable reference to an image that sustains across application restarts. There is probably the concern that the link can break if the user deletes that image from their photo library. Is there a way to check that?
There is no way to get a file url to an image stored in the Photo Library.
If you really do need to keep a reference to the file for programatic reasons, then choosing the image from UIImagePickerController and saving a copy to the Documents folder is probably your only option.
It would help if we could understand why you require a file reference to the image. As far as the iPhone is concerned, the image is safe and sound in the photo library, if user needs it, it can be picked from the image picker, like normal.
However, if you're trying to use it for a customisable background or something, then I think saving a copy is your only option.

iPhone: Can I get an image picker to have the documents folder as its source

It looks like I cant create an album for my picture producing app in the photo library... so what I was going to do is save the images to the documents folder for my app, which I think should be easy enough. The issue though is that the image picker seems to only allow you to pick saved images or photo library as the source, and I would like users to be able to view all images created by my app. Is there a way to make the picker work or will I have to roll my own?
the image picker that apple provides only gives you access to pictures saved in the camera roll. It also gives you the functionality to take a new picture if you are on an iphone. If you save pictures in your app's local storage directory, then you need to build your own mechanism for viewing these photos. You may want to take a look at Joe Hewitt's 320 project - it has a lot of good controls that you may find useful.

How to make UI Image Picker Controller read a custom source type in iPhone

I have to create a photo gallery app in iPhone. It should function same as the Photos app which is shipped with iPhone. But it should show the images which I package with the app.
UIImagePickerController reads only the following source types.
UIImagePickerControllerSourceTypePhotoLibrary,
UIImagePickerControllerSourceTypeCamera,
UIImagePickerControllerSourceTypeSavedPhotosAlbum
I was thinking of adding the images bundle to the resources group in Xcode and make UIImagePickerController to read them and display.
Looking at the class references I found UIImagePickerController reads only from the resources mentioned above. Which means it can only pick the images from camera roll OR saved photo gallery OR allow user to take a pic and use it.
Does anybody know how to make UIImagePickerController read from custom source type or images?
OR
How to create a photo gallery app in iPhone :-)
Thanks,
AJ
I don't believe it is possible to make the UIImagePicker pick images from your own source. You will have to write the picker yourself (which, performance aside, doesn't seem to hard... Just a couple of UIImageViews in a UIScrollView).
Just today I started a open source UIImagePickerController clone, it is not perfect but it works quite ok. Feel free to fork http://github.com/jeena/JPImagePickerController