webentwicklung-frage-antwort-db.com.de

Legen Sie die Abmessungen für die UIImagePickerController-Feldkiste "Verschieben und Skalieren" fest

Wie bestimmt der Bildschirm "Verschieben und Skalieren" die Abmessungen für seine Cropbox?

Grundsätzlich möchte ich eine feste Breite und Höhe für "CropRect" festlegen und den Benutzer das Bild verschieben und skalieren lassen, um es wie gewünscht in die Box zu passen.

Weiß jemand, wie das geht? (Oder wenn es mit dem UIImagePickerController überhaupt möglich ist)

Vielen Dank!

36
Thomas K

Mit UIImagePickerController leider nicht möglich. Die von mir empfohlene Lösung besteht darin, die Bearbeitung für die Bildauswahl zu deaktivieren und selbst zu bearbeiten. Zum Beispiel habe ich das Bild in eine scrollbare, zoombare Bildansicht gestellt. Oben in der Bildansicht befindet sich eine feste Position "Zuschneideführungsansicht", die die Zuschnittanzeige anzeigt, die der Benutzer sieht. Angenommen, die Führungsansicht verfügt über Eigenschaften für das sichtbare Rechteck (das Teil, das beibehalten werden soll) und die Kantenbreiten (das Teil, das verworfen werden soll), und Sie können das Schnittrechteck so erhalten. Sie können die Kategorie UIImage + Resize verwenden, um das eigentliche Zuschneiden durchzuführen.

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];
36

Ein bisschen spät zum Spiel, aber ich denke, das ist, wonach Sie suchen: https://github.com/gekitz/GKImagePicker

24
Yuriy

Hier ist eine Lösung für das manuelle Zuschneiden von Ming Yang. https://github.com/myang-git/iOS-Image-Crop-View

Es bietet einen rechteckigen Rahmen, den der Benutzer verschieben oder ziehen kann, um den gewünschten Teil des Bildes in das Rechteck einzufügen. Bitte beachten Sie, dass diese Lösung die umgekehrte Frage stellt - lässt die Rechteckgröße variieren, bringt aber letztendlich das gewünschte Ergebnis. 

Es ist in Objective-C codiert. Möglicherweise müssen Sie ihn entweder in Swift codieren oder einfach einen Überbrückungsheader erstellen, um den Objective-C-Code mit dem Swift-Code zu verbinden. 

4
Sriram

Es ist jetzt später als spät, kann aber für jemanden nützlich sein. Dies ist die Bibliothek, die ich für Swift verwendet habe (vielen Dank an Tim Oliver ):

TOCropViewController

wie in der Datei README im GitHub-Link oben beschrieben, können Sie mithilfe dieser Bibliothek zugeschnittene Bilder in benutzerdefinierten rechteckigen Formaten und auch in einem kreisförmigen Modus erhalten, z. für die Aktualisierung des Profilbildes . unten ist Beispielcode von 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
    }
1
MFA