Bu sınıfın Swift sürümünü oluşturdum: https://github.com/bennythemink/ZoomRotatePanImageView/blob/master/ZoomRotatePanImageView.m İşleri güzel. Şimdi değiştirilmiş görüntüyü dosyaya kaydetmek istiyorum. Şey, tam çözünürlükte kaydetmek istiyorum ve ayrıca sadece kullanıcı tarafından görülebilen alanı kaydetmek istiyorum.Düzenleme, döndürme ve çevirme işlemlerini gerçekleştirdikten sonra görüntüyü düzenleme
Sana basit bir örnek gösterelim:
Bu benim app bu şekilde görünüyor. Görüntü iOS simülatöründe birkaç örnektir. Çoğu ekran dışı. Sadece görünen kısmı istiyorum. Bu gibi görünüyor kırpmadan kaydettikten sonra
: iyi olurdu kırpma sonra
Şimdiye kadar iyi.
Ama şimdi en bazı değişiklikler yapalım:
kaydettikten sonra: Yanlış pivot ile dönüştürülmüş oluyor gibi
görünüyor. Bunu nasıl düzeltebilirim?
UIGraphicsBeginImageContextWithOptions(imageContainer.bounds.size, false, 0)
self.imageContainer.drawViewHierarchyInRect(imageContainer.bounds, afterScreenUpdates: true)
let screenshot = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
Ancak çıkış görüntü gerçek görüntü görüntüsü boyutunu değil var ve tam olarak istiyorum:
UIGraphicsBeginImageContextWithOptions(image.size, false, 0)
let context = UIGraphicsGetCurrentContext()
let transform = imageView.transform
let imageRect = CGRectMake(0, 0, image.size.width, image.size.height)
CGContextSetFillColorWithColor(context, UIColor.blueColor().CGColor) //for debugging
CGContextFillRect(context, imageRect)
CGContextConcatCTM(context, transform)
image.drawInRect(imageRect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
bunu başarmak için daha basit bir yöntem var:
İşte tasarrufu için benim kod çözüm.
Teşekkür vurdu, ama böyle ben tam çözünürlükte görüntü istediklerini söyledi . Ekrana benzer bir çözünürlükte zaten bir çözüm gönderdim, sorumun alt bölümüne bakın. image! .drawInRect (imageView! .bounds) - bu, 4k görüntünün imageView boyutunda olmasına neden olur, bu nedenle ekran boyutuna bağlıdır. – Makalele
Teşekkürler, sanırım yakınız. Neredeyse gerektiği gibi görünüyor. Ancak problem, ekran üzerinde sadece görünen kısmın düzgün bir şekilde kırpılması gerektiğidir (iPhone görüntüsüne sığdırmak için biraz daha az - daha az). Lütfen sınıfın tüm koduna bakın: Hazırlık kodu http://pastebin.com/6UUj1B0w kodunuzdadır. topImage, ekran görüntüsünde görebileceğiniz iPhone'dur. Boş görünüm denetleyicisindeki yeni projede kolayca test edebilirsiniz. Altta tek yöntem - nasıl göründüğünü gösterir. – Makalele
ZoomRotatePanImageView her zaman en uygunudur. Yani topImageView ve imageView için çerçeve ayarlamanıza gerek yok, tam ekran boyutunu koru. İçerik modunuzu topImageView'ünüz için uygun hale getirin. Örneğimden ekran görüntüleri ekleniyor, beklendiği gibi çalışıyor. –