Ustaw wymiary dla interfejsu UIImagePickerController "przenieś i przeskaluj" cropbox
Jak "przesuń i skaluj ekran" określa wymiary swojego cropboxa?
Zasadniczo chciałbym ustawić stałą szerokość i wysokość dla "CropRect" i pozwolić użytkownikowi przenieść i przeskalować swój obraz, aby dopasować się do tego pola zgodnie z życzeniem.
Czy ktoś wie jak to zrobić? (Lub jeśli jest to w ogóle możliwe z UIImagePickerController)
Dzięki!
4 answers
Niestety nie jest to możliwe z UIImagePickerController. Rozwiązaniem, które polecam, jest wyłączenie edycji dla selektora obrazów i obsługa go samodzielnie. Na przykład umieszczam obraz w przewijalnym widoku obrazu z możliwością powiększenia. Na górze widoku obrazu znajduje się stała pozycja "widok prowadnicy kadrowania", która rysuje wskaźnik kadrowania widziany przez użytkownika. Zakładając, że widok prowadnicy ma właściwości dla widocznego rect (część do zachowania) i szerokości krawędzi (część do odrzucenia), można uzyskać prostokąta kadrowania w ten sposób. Ty można użyć kategorii UIImage+Resize, aby wykonać rzeczywiste kadrowanie.
CGRect cropGuide = self.cropGuideView.visibleRect;
UIEdgeInsets edges = self.cropGuideView.edgeWidths;
CGPoint cropGuideOffset = self.cropScrollView.contentOffset;
CGPoint origin = CGPointMake( cropGuideOffset.x + edges.left, cropGuideOffset.y + edges.top );
CGSize size = cropGuide.size;
CGRect crop = { origin, size };
crop.origin.x = crop.origin.x / self.cropScrollView.zoomScale;
crop.origin.y = crop.origin.y / self.cropScrollView.zoomScale;
crop.size.width = crop.size.width / self.cropScrollView.zoomScale;
crop.size.height = crop.size.height / self.cropScrollView.zoomScale;
photo = [photo croppedImage:crop];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-01 18:59:44
Trochę późno na grę, ale myślę, że to może być to, czego szukasz: https://github.com/gekitz/GKImagePicker
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-07 03:18:57
Oto rozwiązanie do ręcznego kadrowania przez Ming Yang. https://github.com/myang-git/iOS-Image-Crop-View
Oferuje prostokątną ramkę, którą użytkownik może przesuwać lub przeciągać, aby pasowała do wymaganej części obrazu w prostokącie. Należy pamiętać, że to rozwiązanie nie odwraca zadanego pytania - pozwala na zmianę rozmiaru prostokąta, ale ostatecznie przynosi pożądany efekt.
Jest zakodowany w Objective-C. być może będziesz musiał albo zakodować go w Swift, albo po prostu zbudować pomostowy nagłówek do połączenia kodu Objective-C z kodem Swift.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-07 15:12:00
Jest teraz późno niż późno, ale może się komuś przydać. To jest biblioteka, której użyłem dla swift (Wielkie dzięki dla Tim Oliver):
Jak opisano w pliku README w linku GitHub powyżej, za pomocą tej biblioteki można uzyskać przycięte obrazy w zdefiniowanym przez użytkownika trybie prostokątnym, a także w trybie okrągłym, np. do aktualizacji obrazu profilowego. poniżej przykładowy kod z GitHub:
func presentCropViewController {
let image: UIImage = ... //Load an image
let cropViewController = CropViewController(image: image)
cropViewController.delegate = self
present(cropViewController, animated: true, completion: nil)
}
func cropViewController(_ cropViewController: CropViewController, didCropToImage image: UIImage, withRect cropRect: CGRect, angle: Int) {
// 'image' is the newly cropped version of the original image
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-29 11:38:50