Mam przycisk zapisu o nazwie Zapisz do albumu fotograficznego. Na górze przycisku znajduje się mały UIImageView, w którym użytkownik może kliknąć przycisk poniżej, aby zapisać rzeczywisty rozmiar zdjęcia w albumie fotograficznym. Mój problem polega na tym, że po kliknięciu przycisku zapisu pojawia się błąd: Nie można zapisać obrazu do albumu fotograficznego.
Myślę, że zrobiłem to dobrze, ale moje doświadczenie jest zbyt ograniczone.
H Plik:
#import <UIKit/UIKit.h>
@interface SecondViewController : UIViewController {
IBOutlet UIButton *btnReturn;
IBOutlet UIButton *savePhoto;
IBOutlet UIImage *saveImage;
}
@property (nonatomic, retain) IBOutlet UIButton *btnReturn;
@property (nonatomic, retain) IBOutlet UIButton *savePhoto;
@property (nonatomic, retain) IBOutlet UIImage *saveImage;
-(IBAction) saveToPhotoAlbum;
@end
Poniżej mój kod:
-(IBAction) saveToPhotoAlbum{
NSString *saveMyPhoto=[NSHomeDirectory() stringByAppendingPathComponent:@"sample.png"];
UIImage *saved=[UIImage imageWithContentsOfFile:saveMyPhoto];
NSData *imageData = [NSData dataWithContentsOfFile:(NSString *)UIImagePNGRepresentation(saved)];
[imageData writeToFile:(NSString *)saved atomically:YES ];
UIImageWriteToSavedPhotosAlbum(saved, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
}
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
UIAlertView *alert;
if (error)
alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Unable to save image to Photo Album."
delegate:self cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
else
alert = [[UIAlertView alloc] initWithTitle:@"Success"
message:@"Image saved to Photo Album."
delegate:self cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
[alert release];
}
2 odpowiedzi
Te linie wyglądają naprawdę podejrzanie:
NSString *saveMyPhoto=[NSHomeDirectory() stringByAppendingPathComponent:@"sample.png"];
...
UIImage *saved = [UIImage imageWithContentsOfFile:saveMyPhoto];
...
[imageData writeToFile:(NSString *)saved atomically:YES ];
Czego oczekujesz od tego? Otrzymujesz ścieżkę do obrazu, ładujesz go, a następnie zapisujesz ponownie, ale rzuciłeś UIImage na NSString i masz nadzieję, że magicznie zmieni się w prawidłową ścieżkę na dysku?
Jeśli chodzi o pytanie, które zadajesz, czy jesteś pewien, że Twój obraz jest prawidłowym obrazem?
Po prostu utwórz obiekt UIImage i załaduj obraz z pliku. Następnie po prostu wywołaj funkcję UIIMageWriteToSavedPhotoAlbum i przekaż obiekt UIImage jako pierwszy parametr, a reszta może być NIL. Zobacz Dokumentacja Apple SDK.
Podobne pytania
Nowe pytania
objective-c
Tego znacznika należy używać tylko w przypadku pytań dotyczących funkcji Objective-C lub zależnych od kodu w języku. Tagi [cocoa] i [cocoa-touch] powinny być używane, aby zapytać o ramy lub klasy Apple. Użyj powiązanych tagów [ios], [macos], [apple-watch] i [tvos] w przypadku problemów specyficznych dla tych platform.