Chỉ có thể xoay hình ảnh trong UIImageView? Tôi đang tìm kiếm thông tin về nó, nhưng tôi chỉ tìm thấy thông tin về cách xoay UIImageVeiw.Xoay hình ảnh trong UIImageView
Trả lời
Bạn có thể xoay hình ảnh bằng mã sau. Lưu ý, đây sử dụng một CGImageRef mà bạn có thể nhận được từ một UIImage qua
CGImageRef imageRef = [self CGImageRotatedByAngle:[image CGImage] angle:30];
Một khi bạn có được hình ảnh xoay, bạn có thể thiết lập hình ảnh của ImageView để hình ảnh xoay mới của bạn như thế này:
UIImage* img = [UIImage imageWithCGImage: imageRef];
myImageView.image = img;
đây là một phương pháp mà sẽ xoay imageRef:
- (CGImageRef)CGImageRotatedByAngle:(CGImageRef)imgRef angle:(CGFloat)angle
{
CGFloat angleInRadians = angle * (M_PI/180);
CGFloat width = CGImageGetWidth(imgRef);
CGFloat height = CGImageGetHeight(imgRef);
CGRect imgRect = CGRectMake(0, 0, width, height);
CGAffineTransform transform = CGAffineTransformMakeRotation(angleInRadians);
CGRect rotatedRect = CGRectApplyAffineTransform(imgRect, transform);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef bmContext = CGBitmapContextCreate(NULL,
rotatedRect.size.width,
rotatedRect.size.height,
8,
0,
colorSpace,
kCGImageAlphaPremultipliedFirst);
CGContextSetAllowsAntialiasing(bmContext, YES);
CGContextSetShouldAntialias(bmContext, YES);
CGContextSetInterpolationQuality(bmContext, kCGInterpolationHigh);
CGColorSpaceRelease(colorSpace);
CGContextTranslateCTM(bmContext,
+(rotatedRect.size.width/2),
+(rotatedRect.size.height/2));
CGContextRotateCTM(bmContext, angleInRadians);
CGContextTranslateCTM(bmContext,
-(rotatedRect.size.width/2),
-(rotatedRect.size.height/2));
CGContextDrawImage(bmContext, CGRectMake(0, 0,
rotatedRect.size.width,
rotatedRect.size.height),
imgRef);
CGImageRef rotatedImage = CGBitmapContextCreateImage(bmContext);
CFRelease(bmContext);
[(id)rotatedImage autorelease];
return rotatedImage;
}
Hãy xem xoay lớp ImageView. Bạn sẽ cần phải nhập thư viện QuartzCore để có thể truy cập được.
myImageView.layer.transform = CGAffineTransformMakeRotation (1.5);
đã phải sử dụng 'setAffineTransform' – fabian789
Vui lòng thử này, nó hoạt động cho tôi:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationRepeatCount:10];
myImgView.transform = CGAffineTransformMakeRotation(M_PI);
[UIView commitAnimations];
Chúc bạn may mắn!
Các mã sau hoạt động tốt với Swift:
let img = UIImage(CGImage: self.imageView.image!.CGImage, scale: 1.0, orientation: UIImageOrientation.Right)
self.imageView.image = img
self.imageView.setNeedsLayout()
Nếu bạn cần phải xoay/lật hình ảnh cho mục đích nội địa hóa, bạn có thể sử dụng như sau: imageView.image = imageView.image?.imageFlippedForRightToLeftLayoutDirection()
- 1. iphone xoay UIImageView
- 2. IOS: xoay một UIImageView
- 3. iOS CAKeyframeChế độ xoay vòngMode trên UIImageView
- 4. Xoay hình ảnh trong Eclipse
- 5. Xoay hình ảnh trong android
- 6. Xoay hình ảnh trong java
- 7. Xoay hình ảnh kém
- 8. Android: Xoay hình ảnh trong hình ảnh bằng một góc
- 9. jquery xoay hình ảnh onclick
- 10. cách xoay hình ảnh trong QGraphicsView
- 11. xoay hình ảnh 90 độ trong java
- 12. xoay 3D trên hình ảnh
- 13. Xoay UIImageView theo chiều kim đồng hồ
- 14. UIScrollView với UIImageView xoay vòng giữa khi thu phóng?
- 15. Cách xoay hình ảnh và lưu hình ảnh
- 16. Lấy mảng ảnh trong UIImageView (trong UIPageViewController)
- 17. Xoay ảnh trong Qt
- 18. Làm thế nào để bạn xoay UIView, UIImageView hoặc CALayer hoạt ảnh 360˚?
- 19. Hoạt ảnh UIImage hoặc UIImageView?
- 20. Tỷ lệ khung hình trong UIImageView
- 21. Xoay hình ảnh (s) OnClick với jQuery?
- 22. Thu phóng và xoay khung hình ảnh
- 23. Xoay hình ảnh toán học (C#)
- 24. Vấn đề xoay hình ảnh UIButton
- 25. Dừng tự động xoay hình ảnh trong hình ảnh Django-imagekit Hình thu nhỏ
- 26. HTML5 xoay hình ảnh bằng canvas
- 27. Làm cách nào để xoay hình ảnh?
- 28. UIImageView: Thay đổi kích thước thành kích thước hình ảnh?
- 29. Vẽ một hình dạng trong UIImageView IOS
- 30. Hình ảnh không vừa với khung của UIImageView
Thank bạn. Đó là chính xác những gì tôi muốn. – murzynpl
Một người nào đó có thể phải đối mặt với kết quả không thể đoán trước như tôi đã làm gần đây - hình ảnh cuối cùng bị mất kích thước ban đầu và các góc bị cắt. Vì vậy, tôi đã slighlty sửa đổi các chức năng để có được kết quả chính xác. Nếu ai đó tự hỏi giải pháp của tôi là ở đây: http://stackoverflow.com/questions/19219855/uiimageview-get-transformed-uiimage/19221081#19221081 – heximal
Sau khi kích thước hình ảnh xoay sẽ thay đổi như bình luận trước đó đã đề cập. Có một lỗi nhỏ trong mã ở trên. Cuộc gọi cuối cùng với CGContextTranslateCTM và CGContextDrawImage nên sử dụng chiều rộng và chiều cao ban đầu thay vì roundRect.size.width và rounded.size.height. Một khi bạn làm điều đó, đoạn mã trên hoạt động hoàn hảo. Lý do - một ctxt với rect xoay được tạo ra, nguồn gốc được chuyển đến trung tâm, sau đó nó được xoay ngược để phù hợp với hướng hình ảnh gốc. Tại thời điểm này, bạn cần di chuyển nó trở lại trong hệ tọa độ của ảnh gốc. – matangs