Saya telah membenturkan wajah saya ke wajah ini selama berhari-hari sekarang dan meskipun saya merasa terus-menerus bahwa saya benar di ujung wahyu, saya benar-benar tidak dapat mencapai tujuan saya.
Saya pikir, sebelumnya dalam fase konseptual desain saya, bahwa akan menjadi masalah sepele untuk mengambil gambar dari kamera atau perpustakaan iPhone, menurunkannya ke ketinggian yang ditentukan, menggunakan fungsi yang setara dengan opsi Isi Aspek dari UIImageView (seluruhnya dalam kode), dan kemudian memotong apa pun yang tidak cocok dengan CGRect yang disahkan.
Mendapatkan gambar asli dari kamera atau perpustakaan, itu sepele. Saya terkejut melihat betapa sulitnya dua langkah lainnya terbukti.
Gambar terlampir menunjukkan apa yang saya coba capai. Apakah seseorang tolong berbaik hati untuk memegang tangan saya? Setiap contoh kode yang saya temukan sejauh ini tampaknya menghancurkan gambar, terbalik, terlihat seperti omong kosong, menarik keluar batas, atau tidak berfungsi dengan benar.
sumber
Jawaban:
Saya membutuhkan hal yang sama - dalam kasus saya, untuk memilih dimensi yang cocok setelah diskalakan, dan kemudian memotong setiap ujung agar sesuai dengan lebar. (Saya bekerja di lanskap, jadi mungkin tidak memperhatikan kekurangan dalam mode potret.) Ini kode saya - ini adalah bagian dari kategorisasi pada UIImage. Ukuran target dalam kode saya selalu diatur ke ukuran layar penuh perangkat.
sumber
Posting yang lebih lama berisi kode untuk metode untuk mengubah ukuran UIImage Anda. Bagian yang relevan adalah sebagai berikut:
Sejauh pemangkasan berlangsung, saya percaya bahwa jika Anda mengubah metode untuk menggunakan ukuran yang berbeda untuk penskalaan daripada untuk konteks, gambar yang dihasilkan Anda harus dipotong ke batas-batas konteks.
sumber
originalImage
. Terima kasih.UIGraphicsBeginImageContextWithOptions(newSize, 1.0f, 0.0f);
. (dijelaskan di sini: stackoverflow.com/questions/4334233/... )Saya usulkan yang ini. Bukankah dia cantik? ;)
sumber
Ada banyak kode terkait dengan pengubahan ukuran gambar + beberapa operasi lainnya. Saya menemukan yang ini ketika mencoba mencari cara mengubah ukuran gambar ... http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/
sumber
Ini dia Yang ini sempurna ;-)
EDIT: lihat di bawah komentar - "Tidak bekerja dengan gambar tertentu, gagal dengan: CGContextSetInterpolationQuality: konteks yang tidak valid kesalahan 0x0"
sumber
Ini adalah versi jawaban Jane Sales di Swift. Bersulang!
sumber
Saya memodifikasi Kode Brad Larson. Itu akan aspek mengisi gambar dalam kotak yang diberikan.
sumber
Versi Xamarin.iOS untuk jawaban yang diterima tentang cara mengubah ukuran dan kemudian memotong UIImage (Isi Aspek) di bawah
sumber
Saya mengubah panduan Sam Wirch menjadi cepat dan itu bekerja dengan baik bagi saya, meskipun ada sedikit "pengekangan" pada gambar akhir yang tidak bisa saya selesaikan.
Jika ada yang menginginkan versi c yang objektif, itu ada di situs webnya.
sumber
Saya menemukan bahwa Swift 3 yang diposting oleh Evgenii Kanvets tidak secara seragam mengukur gambar.
Ini adalah versi fungsi Swift 4 saya yang tidak merusak gambar:
sumber
UIGraphicsBeginImageContextWithOptions
tetapi yang lain bekerja dengan sempurna. Terima kasih!Kode sederhana berikut ini berfungsi untuk saya.
sumber
UIImageView
objek. Namun, pertanyaan ini adalah tentang penskalaanUIImage
objek itu sendiri.maka Anda dapat mengambil tangkapan layar ke gambar Anda dengan ini
sumber
Di bawah contoh pekerjaan: Gambar kiri - (gambar asal); Gambar kanan dengan skala x2
Jika Anda ingin skala gambar tetapi mempertahankan frame (proporsinya), panggil metode ini dengan cara:
sumber
Pertanyaan ini tampaknya telah dikesampingkan, tetapi dalam pencarian saya untuk solusi yang saya bisa lebih mudah mengerti (dan ditulis dalam Swift), saya sampai pada ini (juga diposting ke: Bagaimana cara memotong UIImage? )
Saya ingin dapat memotong dari suatu wilayah berdasarkan rasio aspek, dan skala ke ukuran berdasarkan batas luar. Berikut variasi saya:
Ada beberapa hal yang saya anggap membingungkan, masalah terpisah dari penanaman dan ukuran. Pemotongan ditangani dengan asal kotak yang Anda lewati untuk menggambarInRect, dan penskalaan ditangani oleh bagian ukuran. Dalam kasus saya, saya perlu menghubungkan ukuran kotak tanam pada sumber, dengan kotak keluaran saya dari rasio aspek yang sama. Faktor skala kemudian adalah output / input, dan ini perlu diterapkan ke drawRect (diteruskan ke drawInRect).
Satu peringatan adalah bahwa pendekatan ini secara efektif mengasumsikan bahwa gambar yang Anda gambar lebih besar dari konteks gambar. Saya belum menguji ini, tetapi saya pikir Anda dapat menggunakan kode ini untuk menangani pemotongan / pembesaran, tetapi secara eksplisit mendefinisikan parameter skala sebagai parameter skala yang disebutkan di atas. Secara default, UIKit menerapkan pengganda berdasarkan resolusi layar.
Akhirnya, perlu dicatat bahwa pendekatan UIKit ini lebih tinggi daripada pendekatan CoreGraphics / Quartz dan Core Image, dan tampaknya menangani masalah orientasi gambar. Perlu juga disebutkan bahwa itu cukup cepat, kedua dari ImageIO, menurut posting ini di sini: http://nshipster.com/image-resizing/
sumber
Versi cepat:
sumber
Ini adalah versi Swift 3 dari panduan Sam Wirch untuk swift yang diposting oleh William T.
sumber