Wie bekomme ich ein Thumbnail oder einen speicherbaren Pfad von UIImagePickerController, um es für ein UIImageView zu verwenden?

8

Könnte jemand bitte einen Beispielcode erklären oder zeigen, wie ich ein Thumbnail in eine UIImageView einfügen kann, nachdem der Benutzer ein Foto mit UIImagePickerController ausgewählt hat?

Nehmen wir an, ich möchte ein Miniaturbild als Bild einer Tabellenansichtszelle festlegen. Wenn der Benutzer die Zelle drückt, wird der Bilderwähler angezeigt und der Benutzer wählt ein Bild aus, das sich bereits auf seinem Gerät befindet. Ich möchte auch den Pfad zu dieser Miniaturansicht speichern, damit die nächste Miniaturansicht angezeigt wird, wenn sie das nächste Mal angezeigt wird.

Ich kann eine Bildauswahl anzeigen und mein Delegierter erhält das gewählte Bild korrekt, aber ich möchte den Pfad zum Thumbnail, und ich möchte das Thumbnail mit diesem Pfad laden (d. h. ich möchte den Pfad speichern). Ich habe heute stundenlang gesucht und habe das nicht herausgefunden. Vielleicht verstehe ich ALAsset nicht, oder vielleicht ist es etwas anderes, aber ich kann keine Beispiele finden, die mir helfen. Ich habe den Bilderwähler oder ALAsset vorher noch nie benutzt, also bin ich völlig neu dabei.

    
viperacr99 11.01.2011, 21:49
quelle

4 Antworten

15

// Wenn du das hier liest und dir die Kommentare unten anschaust und denkst ?? WTF ?? Das liegt daran, dass ich meine ursprüngliche Antwort bearbeite, anstatt zwei Antworten zu veröffentlichen, in der Hoffnung, dass die Dinge sauberer werden. Es ist wichtig zu wissen, dass ALAssetsLibrary eine iOS 4.x Sache ist.

Der folgende Code funktioniert, um eine Asset-Bibliothek-URL zu übernehmen und dann einen UII-Fehler aus der Thumbnail-Darstellung zu machen. Obwohl ich die Asset-Bibliothek-URL direkt verwende, gibt es keinen Grund, dass derselbe Code nicht damit beginnen könnte, eine String-Repräsentation in eine NSURL zu transformieren, um die imageURL -Zuweisung zu erfüllen. Disclaimer: Dieser Code ist wahrscheinlich undicht oder etwas Schlimmeres, aber er beantwortet die Frage des ursprünglichen Posters und ist hoffentlich von Wert.

Der folgende Code entlehnt stark an seinen Stack Overflow. Frage , die im Grunde dasselbe Thema behandelt. Neben dem Code hier habe ich AssetsLibrary.framework und die ALAssentsLibrary typedefs, auf die in der anderen Frage verwiesen wird, eingefügt.

Der ganze Trick ist, dass Sie die NSURL nicht direkt aus einer Asset-Bibliothek referenzieren können. Ich denke (obwohl ich nicht weiß), dass es irgendwie auf einen Datenspeicher statt auf eine Datei verweist, so dass die von der URL zurückgegebenen Daten keine direkten NSData sind, so dass Sie sie nicht auf die alte Art verwenden können.

Es gibt eine UIImageView in dem Code, der photo heißt. Hoffentlich ist alles andere leicht herauszufinden.

%Vor%

Wenn Sie das Thumbnail nicht möchten, aber das vollständige Foto möchten, ändern Sie einfach den Code im Block AssetForURLResult in etwa so:

%Vor%

Wir können das Training für den Benutzer verlassen.

Viel Glück, hoffe, dass dies hilft, die Dinge für Sie zu klären.

    
Walter 12.01.2011, 01:52
quelle
2

Ich habe es jetzt meistens herausgefunden. Die Schwierigkeit, die ich hatte, war, Blöcke zu verstehen, vor allem die Syntax von Blocks machte es schwierig zu verstehen, was sie sind und wie sie funktionieren.

Wenn Sie im Delegaten für den UIImagePickerController ein Bild ausgewählt haben, können Sie den Pfad zum Bild in der Objektbibliothek mit folgendem Befehl abrufen:

%Vor%

Mit diesem Objekt können Sie das Bild in voller Größe oder ein Miniaturbild mit dem folgenden Code erhalten:

%Vor%

Diese Seite hat mir wirklich geholfen, Blöcke zu verstehen: Blöcke in iOS 4 Siehe auch Bild von URL anzeigen, die von ALAsset in iPhone abgerufen wurde

    
viperacr99 12.01.2011 22:59
quelle
1

Das Speichern der URL kann problematisch sein:

  1. zumindest in iOS 4.x ist nicht garantiert, dass die URLs eindeutig sind. Sie können wiederverwendet werden, wenn der Benutzer Bilder löscht / hinzufügt, was offensichtlich üblich ist. So kann die URL, die Sie behalten, auf ein anderes Bild in der Zukunft zeigen!
  2. Wenn der Benutzer auf iOS 5 aktualisiert wird, sind die URLs nicht mehr gültig. PFUI!!! Apple hat die Fotobibliothek ohne Rückwärtskompatibilität neu geschrieben.
AfWiz 17.12.2011 19:43
quelle
0

Sie können das Bild, das Sie aus imagePicker auswählen, in das Dokumentenverzeichnis speichern, um es von der Auswahl aus zu referenzieren Hier ist der Code, mit dem Sie das Bild speichern können. Implementieren Sie diese Methode in der Rückrufmethode, die aufgerufen wird, wenn der Benutzer ein Foto aus der Auswahl auswählt.

%Vor%

// Hier ist das "ProfilePhotoselected" das Bild, das Sie vom Picker als Argument in Ihrer Callabck-Methode bekommen

    
Snehal 12.01.2011 03:56
quelle