Ich möchte Bildmetadaten mit ios anzeigen. Metadaten wie Blende, Shuttergeschwindigkeit, Belichtungskorrektur, ISO, Objektivbrennweite, etc. Also bitte helfen Sie mir, wenn jemand Idee hat.So erhalten Sie Bildmetadaten in ios
Antwort
CGImageSourceRef source = CGImageSourceCreateWithURL((CFURLRef) aUrl, NULL);
CGImageSourceRef source = CGImageSourceCreateWithData((CFDataRef) theData, NULL);
NSDictionary* metadata = (NSDictionary *)CGImageSourceCopyPropertiesAtIndex(source,0,NULL);
Überprüfen Sie den Wörterbuch Inhalt here.
Danke Jonas Schnelli. Es hilft mir sehr. Danke Kumpel. –
Natürlich sollten Sie erwähnen, dass Sie #import
Wenn Sie ARC verwenden, teilen Sie es so, um zu vermeiden Speicherlecks 'CFDictionaryRef dictRef = CGImageSourceCopyPropertiesAtIndex (source, 0, NULL); NSDictionary * Metadaten = (__bridge NSDictionary *) dictRef;
Hier ist der Code, Meta-Daten von einem Bildpfad zu erhalten:
NSData *imagedata = [NSData dataWithContentsOfFile:imagePath];
CGImageSourceRef source = CGImageSourceCreateWithData((CFMutableDataRef)imagedata, NULL);
NSDictionary *metadata = [(NSDictionary *)CGImageSourceCopyPropertiesAtIndex(source,0,NULL)autorelease];
Oder, wenn swift 4.0 mit:
var imagedata = Data(contentsOfFile: imagePath)
var source: CGImageSourceRef = CGImageSourceCreateWithData((imagedata as? CFMutableDataRef), nil)
var metadata = CGImageSourceCopyPropertiesAtIndex(source, 0, nil) as? [AnyHashable: Any]
wie in swift3 oder swift4 zu tun? –
var imagedata = Daten (contentsOfFile: imagePath) var Quelle: CGImageSourceRef = CGImageSourceCreateWithData ((Bilddaten als? CFMutableDataRef), null) var metadata = CGImageSourceCopyPropertiesAtIndex (source, 0, nil) als? [AnyHasable: Any] –
hoffe es hilft dir –
Sie müssen Vermögenswerte Bibliothek lesen EXIF-Metadaten von Bild verwenden .
#import <AssetsLibrary/AssetsLibrary.h>
Und dann folgenden Code hinzu:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSURL *assetURL = [info objectForKey:UIImagePickerControllerReferenceURL];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
__block NSMutableDictionary *imageMetadata = nil;
[library assetForURL:assetURL
resultBlock:^(ALAsset *asset) {
NSDictionary *metadata = asset.defaultRepresentation.metadata;
imageMetadata = [[NSMutableDictionary alloc] initWithDictionary:metadata];
NSLog(@"%@",imageMetadata.description);
}
failureBlock:^(NSError *error) {
}];
}
Hope this helfen
Funktioniert nicht, AssetURL ist immer Null – malex
Hier ist, was ich bin mit der Bildgröße zu erhalten:
+ (CGSize) sizeOfImage:(NSString *) fileName withPath: (NSURL *) fullDirectoryPath;
{
NSURL *imageNameWithPath = [NSURL URLWithString:fileName relativeToURL:fullDirectoryPath];
CGImageSourceRef source = CGImageSourceCreateWithURL((CFURLRef) imageNameWithPath, NULL);
if (!source) return CGSizeZero;
CFDictionaryRef dictRef = CGImageSourceCopyPropertiesAtIndex(source,0,NULL);
NSDictionary* metadata = (__bridge NSDictionary *)dictRef;
NSLog(@"metadata= %@", metadata);
CGSize result = CGSizeZero;
CGFloat width = [metadata[@"PixelWidth"] floatValue];
CGFloat height = [metadata[@"PixelHeight"] floatValue];
NSLog(@"width= %f, height= %f", width, height);
// The orientation in the metadata does *not* map to UIImageOrientation. Rather, see: https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGImageProperties_Reference/index.html#//apple_ref/doc/constant_group/Individual_Image_Properties
// This idea of orientation seems a little odd to me, but it seems it translates to even numbers need to be switched in width/height, odd numbers do not.
NSUInteger orientation = [metadata[@"Orientation"] integerValue];
switch (orientation) {
// Comments give "Location of the origin of the image"
case 1: // Top, left
case 3: // Bottom, right
case 5: // Left, top
case 7: // Right, bottom
result = CGSizeMake(width, height);
break;
case 2: // Top, right
case 4: // Bottom, left
case 6: // Right, top
case 8: // Left, bottom
result = CGSizeMake(height, width);
break;
default:
NSAssert(NO, @"Should not get to here!");
break;
}
CFRelease(source);
NSLog(@"size: %@, orientation: %d", NSStringFromCGSize(result), orientation);
return result;
}
/* Example meta data:
ColorModel = RGB;
Depth = 8;
Orientation = 6;
PixelHeight = 1936;
PixelWidth = 2592;
"{Exif}" = {
ColorSpace = 1;
PixelXDimension = 2592;
PixelYDimension = 1936;
};
"{JFIF}" = {
DensityUnit = 0;
JFIFVersion = (
1,
1
);
XDensity = 1;
YDensity = 1;
};
"{TIFF}" = {
Orientation = 6;
};
}
*/
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSURL *referenceURL = [info objectForKey:UIImagePickerControllerReferenceURL];
if(referenceURL) {
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library assetForURL:referenceURL resultBlock:^(ALAsset *asset) {
ALAssetRepresentation *rep = [asset defaultRepresentation];
NSDictionary *metadata = rep.metadata;
NSLog(@"image data %@", metadata);
} failureBlock:^(NSError *error) {
// error handling
}];
}
Es ist besser, einige Erklärungen in Ihrer Antwort zu geben. – Envil
swift 4
static func imageDataProperties(_ imageData: Data) -> NSDictionary? {
if let imageSource = CGImageSourceCreateWithData(imageData as CFData, nil)
{
if let dictionary = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, nil) {
return dictionary
}
}
return nil
}
Beantworten meiner eigenen Frage. Der Speicher-effektive und schnelle Art und Weise einen GPS-Metadaten zu erhalten, ist
let options = [kCGImageSourceShouldCache as String: kCFBooleanFalse]
if let data = NSData(contentsOfURL: url), imgSrc = CGImageSourceCreateWithData(data, options) {
let metadata = CGImageSourceCopyPropertiesAtIndex(imgSrc, 0, options) as Dictionary
let gpsData = metadata[kCGImagePropertyGPSDictionary] as? [String : AnyObject]
}
Die zweite Option ist
if let img = CIImage(contentsOfURL: url), metadata = img.properties(),
gpsData = metadata[kCGImagePropertyGPSDictionary] as? [String : AnyObject] { … }
sieht es in Swift schöner aber mehr Speicher verwendet (getestet über Profiler).
auf iOS 11 Rahmen
Ziel mit Fotos aktualisiert - C:
#import <Photos/Photos.h>
- (void)imagePickerController:(UIImagePickerController *)imagePicker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {
PHAsset* asset = info[UIImagePickerControllerPHAsset];
[asset requestContentEditingInputWithOptions:nil completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) {
CIImage *fullImage = [CIImage imageWithContentsOfURL:contentEditingInput.fullSizeImageURL];
NSLog(@"%@", fullImage.properties.description);
}];
[imagePicker dismissViewControllerAnimated:YES completion:nil];
}
Sie auch die Genehmigung der Photothek Usage (NSPhotoLibraryUsageDescription) benötigen und dann den folgenden Code hinzufügen können, hat zu sehen laden oder anzeigen wurde angezeigt
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
switch (status) {
case PHAuthorizationStatusAuthorized:
NSLog(@"PHAuthorizationStatusAuthorized");
break;
case PHAuthorizationStatusDenied:
NSLog(@"PHAuthorizationStatusDenied");
break;
case PHAuthorizationStatusNotDetermined:
NSLog(@"PHAuthorizationStatusNotDetermined");
break;
case PHAuthorizationStatusRestricted:
NSLog(@"PHAuthorizationStatusRestricted");
break;
}
}];
- 1. So erhalten Sie Bildmetadaten in iOS 9 mit Photos Framework
- 2. So erhalten Sie das ios OneDrive-Framework
- 3. So erhalten Sie Benutzergerät/Android/Ios/Web
- 4. Erhalten Sie Bildmetadaten aus dem Bild, das von UIImagePickerController zurückgegeben wird, um den Geolocation zu finden?
- 5. So erhalten Sie den Akkustand mit 1% Genauigkeit in ios
- 6. So erhalten Sie Zugang Token in Facebook iOS
- 7. So erhalten Sie USSD-Code-Antwort in meiner iOS-App
- 8. So erhalten Sie externe Bildschirmliste und verbinden Sie mit iOS
- 9. So entfernen Sie Bildmetadaten aus großen Bildern ohne Speichermangel in Java
- 10. So erhalten Sie Benutzer mit Namen mit QuickBlox SDK iOS
- 11. So erhalten Sie die Funktion Lange Gestenbewegung unter iOS 3.2
- 12. So erhalten Sie den Namen der Vollzeitzone ios
- 13. So erhalten Sie den IPhone-Typ vom Simulator (IOS)
- 14. So erhalten Sie Elternkomponentenattribute
- 15. So erhalten Sie Artikel in ListView geklickt
- 16. So erhalten Sie Testverlauf
- 17. Erhalten Sie Öffnungszeiten von GMSPlace in iOS
- 18. So verwenden Sie ECC in iOS
- 19. So entfernen Sie Stickerpacks in iOS 10
- 20. So laden Sie meine Ansicht in iOS
- 21. iOS - So speichern Sie In-App-Kaufdaten?
- 22. So zeigen Sie Benachrichtigungen in IOS an
- 23. So implementieren Sie Video DRM in iOS
- 24. So integrieren Sie MuPDF in iOS-Projekt
- 25. So erhalten Sie order_item_id WooCommerce
- 26. So erhalten Sie HTTP-Header
- 27. So erhalten Sie die Standardshell
- 28. So schützen Sie iOS-Bundle-Dateien
- 29. So erhalten Sie den Ländernamen
- 30. So erhalten Sie eine Umleitungsantwort
was meinen Sie mit Bildmetadaten (Name, Größe und einige andere)? Bitte ausführlicher ... –