Hallo,
aktuell arbeite ich daran, Bilder die mit der Kamera gemacht wurden oder bereits in der Library vorhanden sind, im nachinein zuzuschneiden. Dafür lasse ich die Bilder in einer ScrollView erscheinen, so das man schön zoomen kann und sich das Bild hinziehen kann wie man möchte. So weit so gut, dass funktioniert mit den Bildern aus der eigenen Library auch einwandfrei. Die Kamera Bilder machen mir aber aus irgendeinem Grund Probleme, da das Bild nicht wie gewünscht zugeschnitten wird. Die Bilder werden zwar in irgendeiner Form zugeschnitten, aber besitzen dabei ein ganz anderes Verhalten als die Bilder in der Library.
Bspw. wird nicht der ausgewählte Blickpunkt zugeschnitten sondern mal ein bisschen zu weit rechts/links/oben/unten.
Jetzt frage ich mich was der Unterschied zwischen den Bildern aus der Library ist und den Bildern direkt von der Kamera. Hat da jemand Erfahrungen mit ?
Dazu sei gesagt das die Bilder die mit der Kamera gemacht werden, quadratische Maße besitzen.
Hier noch der Code mit dem ich alles mache:
Alles anzeigen
aktuell arbeite ich daran, Bilder die mit der Kamera gemacht wurden oder bereits in der Library vorhanden sind, im nachinein zuzuschneiden. Dafür lasse ich die Bilder in einer ScrollView erscheinen, so das man schön zoomen kann und sich das Bild hinziehen kann wie man möchte. So weit so gut, dass funktioniert mit den Bildern aus der eigenen Library auch einwandfrei. Die Kamera Bilder machen mir aber aus irgendeinem Grund Probleme, da das Bild nicht wie gewünscht zugeschnitten wird. Die Bilder werden zwar in irgendeiner Form zugeschnitten, aber besitzen dabei ein ganz anderes Verhalten als die Bilder in der Library.
Bspw. wird nicht der ausgewählte Blickpunkt zugeschnitten sondern mal ein bisschen zu weit rechts/links/oben/unten.
Jetzt frage ich mich was der Unterschied zwischen den Bildern aus der Library ist und den Bildern direkt von der Kamera. Hat da jemand Erfahrungen mit ?
Dazu sei gesagt das die Bilder die mit der Kamera gemacht werden, quadratische Maße besitzen.
Hier noch der Code mit dem ich alles mache:
Quellcode
- let cropRect = CGRect(x: viewToCrop.frame.origin.x - questionImageView.realImageRect().origin.x,
- y: viewToCrop.frame.origin.y - questionImageView.realImageRect().origin.y,
- width: viewToCrop.frame.width,
- height: viewToCrop.frame.height)
- let croppedImage = cropImage(imageToCrop,toRect: cropRect, viewWidth: questionImageView.frame.width, viewHeight: questionImageView.frame.height)
- func cropImage(_ inputImage: UIImage, toRect cropRect: CGRect, viewWidth: CGFloat, viewHeight: CGFloat) -> UIImage?
- {
- let imageViewScale = max(inputImage.size.width / viewWidth,
- inputImage.size.height / viewHeight)
- // Scale cropRect to handle images larger than shown-on-screen size
- let cropZone = CGRect(x:cropRect.origin.x * imageViewScale,
- y:cropRect.origin.y * imageViewScale,
- width:cropRect.size.width * imageViewScale,
- height:cropRect.size.height * imageViewScale)
- // Perform cropping in Core Graphics
- guard let cutImageRef: CGImage = inputImage.cgImage?.cropping(to:cropZone)
- else {
- return nil
- }
- // Return image to UIImage
- let croppedImage: UIImage = UIImage(cgImage: cutImageRef, scale: inputImage.scale, orientation: inputImage.imageOrientation)
- return croppedImage
- }
- }
- extension UIImageView {
- // MARK: - Methods
- func realImageRect() -> CGRect {
- let imageViewSize = self.frame.size
- let imgSize = self.image?.size
- guard let imageSize = imgSize else {
- return CGRect.zero
- }
- let scaleWidth = imageViewSize.width / imageSize.width
- let scaleHeight = imageViewSize.height / imageSize.height
- let aspect = fmin(scaleWidth, scaleHeight)
- var imageRect = CGRect(x: 0, y: 0, width: imageSize.width * aspect, height: imageSize.height * aspect)
- // Center image
- imageRect.origin.x = (imageViewSize.width - imageRect.size.width) / 2
- imageRect.origin.y = (imageViewSize.height - imageRect.size.height) / 2
- // Add imageView offset
- imageRect.origin.x += self.frame.origin.x
- imageRect.origin.y += self.frame.origin.y
- print("test\(imageRect)")
- return imageRect
- }
- }