Ich verwende die folgende Beschnittmethode, um ein uiimage zuzuschneiden, das in einem UIImageView sitzt, das dann in einem UIScrollView sitzt.Problem mit cropImage-Methode auf Bild in UIScrollView ergibt falsches Bild
-(UIImage *)cropImage:(UIImage *)image
{
float scale = 1.0f/_scrollView.zoomScale;
NSLog(@"Oh and heres that zoomScale: %f", _scrollView.zoomScale);
CGRect visibleRect;
visibleRect.origin.x = _scrollView.contentOffset.x * scale;
visibleRect.origin.y = _scrollView.contentOffset.y * scale;
visibleRect.size.width = _scrollView.bounds.size.width * scale;
visibleRect.size.height = _scrollView.bounds.size.height * scale;
NSLog(@"Oh and here's that CGRect: %f", visibleRect.origin.x);
NSLog(@"Oh and here's that CGRect: %f", visibleRect.origin.y);
NSLog(@"Oh and here's that CGRect: %f", visibleRect.size.width);
NSLog(@"Oh and here's that CGRect: %f", visibleRect.size.height);
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], visibleRect);
UIImage *croppedImage = [[UIImage alloc] initWithCGImage:imageRef];
CGImageRelease(imageRef);
return croppedImage;
}
Ich brauche das Bild zu einer CGSize von (321,115) beschnitten. Nach dem Beschneiden des Bildes und dem Betrachten der Druckergebnisse kann ich sehen, dass visibleRect (0,0,321,115) ist - was es sein soll, die croppedImage
UIIage hat dann Breite: 321 und Höhe: 115. Aus irgendeinem Grund scheint das Bild jedoch vollständig zu weit herangezoomt zu sein (die Methode hat einen kleineren Teil des Originalbilds auf eine Größe von 321x115 zugeschnitten).
Warum schneidet diese Methode mein Bild nicht richtig ab?
-als eine Randnotiz: Wenn ich diese Methode aufrufen, rufe ich wie _croppedImage = [self cropImage:_imageView.image];
, die eine UIImage-Eigenschaft einer benutzerdefinierten UIView-Klasse auf das zugeschnittene Bild setzt.
Wie berücksichtigt dieser Code meine UIScrollView zoomScale? Ich muss den scaleFactor des UIScrollView berücksichtigen, sonst wird der ausgewählte Bereich nicht beschnitten – Chisx
Es bedeutet, dass nur ausgewählte Bereiche beschnitten werden sollen. Recht ? Wenn ja, dann überprüfen Sie bitte die bearbeitete Antwort –
Ja, ich habe es fast funktioniert mit http://stackoverflow.com/questions/7760191/cropping-a-uiimage-according-to-the-viewport-inside-a-uiscrollview, aber es gibt Probleme mit diesem Code .. nur etwas aus. Und ja .. nur ausgewählte Bereich .. Grundsätzlich der gezoomte Bereich oder der Bereich, der in UIScrollView erscheint. Das ist nahe, aber das ist nicht ganz das, wonach ich suche, der Link, den ich hier geteilt habe, ist im Grunde das, wonach ich suchte, aber es funktioniert nicht vollständig. – Chisx