Ich verwende diesen Code in meiner App, der mir hilft, ein Bild zu senden.
Ich habe jedoch eine Bildansicht mit einem Bild. Ich habe keine Datei in Appbundle, aber das Bild auf meiner Seite. Wie kann ich den folgenden Code ändern? Kann mir jemand sagen , wie kann ich konvertieren myimage
zu NSData
?
// Attach an image to the email
NSString *path = [[NSBundle mainBundle] pathForResource:@"rainy" ofType:@"jpg"];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"image/jpeg" fileName:@"rainy"];
objective-c
ios
ipad
cocoa-touch
nsdata
Christina
quelle
quelle
Antworten:
Probieren Sie je nach Bildformat eine der folgenden Möglichkeiten aus:
Hier die Dokumente .
BEARBEITEN:
Wenn Sie auf die Rohbytes zugreifen möchten, aus denen das UIImage besteht, können Sie diesen Ansatz verwenden:
Dadurch erhalten Sie die Low-Level-Darstellung der Bild-RGB-Pixel. (Lassen Sie das
CFBridgingRelease
Bit weg, wenn Sie ARC nicht verwenden.)quelle
(id)CFBridgingRelease(CGDataProviderCopyData(provider))
, das Eigentum anCDataRef
zurückgegebenenCGDataProviderCopyData
in ARC zu übernehmen.data
ausreichen würde oder ob es immer noch einen Speicherverlust geben würde.quelle
Wenn Sie ein Bild in einer UIImageView haben, z. B. "myImageView", können Sie Folgendes tun:
Konvertieren Sie Ihr Bild mit UIImageJPEGRepresentation () oder UIImagePNGRepresentation () wie folgt:
Sie können diesen Code auch in einen GCD-Block einfügen und in einem anderen Thread ausführen, wobei während des Vorgangs eine UIActivityIndicatorView angezeigt wird ...
quelle
Erstellen Sie die Referenz des Bildes ....
Anzeigen von Bildern in der Bildansicht ... Imagedisplay ist eine Referenz der Bildansicht:
Konvertieren Sie es
NSData
durch Übergeben einerUIImage
Referenz und stellen Sie die Komprimierungsqualität in Gleitkommawerten bereit:quelle
Lösung in Swift 4
quelle
cgImage.dataProvider
Daten verschlüsselt? Es scheint sich von den Daten von zu unterscheidenUIImagePNGRepresentation
undUIImageJPEGRepresentation
weil es nicht verwendet werden kann, um ein solches Bild zu erstellenUIImage(data: imageData)
.UIImageJPEGRepresentation
liefert als vorgesehen. Ich glaube jedoch, dass diese Lösung das ursprüngliche Codierungsformat beibehält, in dem sich das Bild befand, und es nicht neu codiert.Verwenden Sie den if-let-Block mit Data, um einen Absturz der App und die sichere Ausführung von Code zu verhindern, da die Funktion UIImagePNGRepresentation einen optionalen Wert zurückgibt.
Generische Bildoperationen (wie png & jpg beide):
Mit der Erweiterung:
quelle
quelle