Saya menggunakan kode ini di aplikasi saya yang akan membantu saya mengirim gambar.
Namun, saya memiliki tampilan gambar dengan gambar. Saya tidak memiliki file di appbundle tetapi memiliki gambar di sisi saya. Bagaimana saya bisa mengubah kode di bawah ini? Bisa ada yang bilang saya bagaimana saya dapat mengkonversi myimage
ke 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
sumber
sumber
Jawaban:
Coba salah satu dari yang berikut, tergantung pada format gambar Anda:
Di sini dokumen .
EDIT:
jika Anda ingin mengakses byte mentah yang membentuk UIImage, Anda bisa menggunakan pendekatan ini:
Ini akan memberi Anda representasi tingkat rendah dari piksel gambar RGB. (Abaikan
CFBridgingRelease
bit jika Anda tidak menggunakan ARC).sumber
(id)CFBridgingRelease(CGDataProviderCopyData(provider))
untuk mengambil kepemilikanCDataRef
dikembalikan olehCGDataProviderCopyData
di ARC.data
sudah cukup atau jika masih ada kebocoran memori.sumber
Jika Anda memiliki gambar di dalam UIImageView, mis. "MyImageView", Anda dapat melakukan hal berikut:
Konversi gambar Anda menggunakan UIImageJPEGRepresentation () atau UIImagePNGRepresentation () seperti ini:
Anda juga dapat memasukkan kode ini di dalam blok GCD dan mengeksekusi di utas lainnya, menampilkan UIActivityIndicatorView selama proses ...
sumber
Buat referensi gambar ....
menampilkan gambar dalam tampilan gambar ... imagedisplay adalah referensi dari tampilan gambar:
mengubahnya menjadi
NSData
dengan melewatiUIImage
referensi dan memberikan kualitas kompresi dalam nilai float:sumber
Solusi dalam Swift 4
sumber
cgImage.dataProvider
data dikodekan? Tampaknya berbeda dari dataUIImagePNGRepresentation
danUIImageJPEGRepresentation
karena tidak dapat digunakan untuk membuat gambar seperti ituUIImage(data: imageData)
.UIImageJPEGRepresentation
disediakan. Tapi saya percaya solusi ini mempertahankan format penyandian asli gambar itu dan tidak menyandikan ulang.Gunakan blok if-let dengan Data untuk mencegah aplikasi crash & eksekusi kode yang aman, karena fungsi UIImagePNGRepresentation mengembalikan nilai opsional.
Operasi gambar umum (seperti png & jpg keduanya):
Dengan menggunakan ekstensi:
sumber
sumber