Vui lòng đưa ra ý tưởng về cách cắt UIImage
trên hình dạng hình bầu dục hoặc hình tròn. Xin vui lòng hướng dẫn cho tôi.Làm thế nào để cắt UIImage trên hình bầu dục hoặc hình tròn?
Trả lời
#import <QuartzCore/QuartzCore.h>
CALayer *imageLayer = YourImageview.layer;
[imageLayer setCornerRadius:5];
[imageLayer setBorderWidth:1];
[imageLayer setMasksToBounds:YES];
bằng cách tăng bán kính nó sẽ trở nên tròn có thể nhiều hơn nữa.
Chừng nào hình ảnh là một hình vuông, bạn có thể có được một vòng tròn hoàn hảo bằng cách lấy một nửa chiều rộng như bán kính góc:
[imageView.layer setCornerRadius:imageView.frame.size.width/2];
Bạn cũng cần phải thêm
[imageView.layer setMasksToBounds:YES];
Khám phá CGImageCreateWithMask
. Tạo một mặt nạ của hình bầu dục của bạn, sau đó áp dụng nó vào hình ảnh.
làm thế nào để tách hình dạng hình bầu dục trên của tôi hình ảnh? xin vui lòng giúp tôi – ram
bạn nên tham khảo This ...
// Create the image from a png file
UIImage *image = [UIImage imageNamed:@"prgBinary.jpg"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
// Get size of current image
CGSize size = [image size];
// Frame location in view to show original image
[imageView setFrame:CGRectMake(0, 0, size.width, size.height)];
[[self view] addSubview:imageView];
[imageView release];
// Create rectangle that represents a cropped image
// from the middle of the existing image
CGRect rect = CGRectMake(size.width/4, size.height/4 ,
(size.width/2), (size.height/2)); //oval logic goes here
// Create bitmap image from original image data,
// using rectangle to specify desired crop area
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rect);
UIImage *img = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
// Create and show the new image from bitmap data
imageView = [[UIImageView alloc] initWithImage:img];
[imageView setFrame:CGRectMake(0, 200, (size.width/2), (size.height/2))];
[[self view] addSubview:imageView];
[imageView release];
Sau một tìm kiếm dài Tôi đã tìm thấy cách chính xác để khoanh tròn hình ảnh
Tải xuống tệp lưu trữ Hỗ trợ từ URL http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/
#import "UIImage+RoundedCorner.h"
#import "UIImage+Resize.h"
dòng sau sử dụng để thay đổi kích thước hình ảnh và chuyển đổi trong làm tròn với bán kính
UIImage *mask = [UIImage imageNamed:@"mask.jpg"];
mask = [mask resizedImage:CGSizeMake(47, 47) interpolationQuality:kCGInterpolationHigh ];
mask = [mask roundedCornerImage:23.5 borderSize:1];
tôi bắt đầu nhìn vào điều này một vài tuần trở lại. Tôi đã thử tất cả các đề xuất ở đây, không có đề xuất nào hoạt động tốt. Trong truyền thống tuyệt vời của RTFM, tôi đã đọc và đọc tài liệu của Apple theo số Quartz 2D Programming và đưa ra điều này. Hãy thử nó ra và cho tôi biết làm thế nào bạn đi.
Mã có thể dễ dàng thay đổi để cắt thành hình elip hoặc bất kỳ hình dạng nào khác được xác định bởi đường dẫn.
Đảm bảo bạn bao gồm Quartz 2D trong dự án của bạn.
#include <math.h>
+ (UIImage*)circularScaleAndCropImage:(UIImage*)image frame:(CGRect)frame {
// This function returns a newImage, based on image, that has been:
// - scaled to fit in (CGRect) rect
// - and cropped within a circle of radius: rectWidth/2
//Create the bitmap graphics context
UIGraphicsBeginImageContextWithOptions(CGSizeMake(frame.size.width, frame.size.height), NO, 0.0);
CGContextRef context = UIGraphicsGetCurrentContext();
//Get the width and heights
CGFloat imageWidth = image.size.width;
CGFloat imageHeight = image.size.height;
CGFloat rectWidth = frame.size.width;
CGFloat rectHeight = frame.size.height;
//Calculate the scale factor
CGFloat scaleFactorX = rectWidth/imageWidth;
CGFloat scaleFactorY = rectHeight/imageHeight;
//Calculate the centre of the circle
CGFloat imageCentreX = rectWidth/2;
CGFloat imageCentreY = rectHeight/2;
// Create and CLIP to a CIRCULAR Path
// (This could be replaced with any closed path if you want a different shaped clip)
CGFloat radius = rectWidth/2;
CGContextBeginPath (context);
CGContextAddArc (context, imageCentreX, imageCentreY, radius, 0, 2*M_PI, 0);
CGContextClosePath (context);
CGContextClip (context);
//Set the SCALE factor for the graphics context
//All future draw calls will be scaled by this factor
CGContextScaleCTM (context, scaleFactorX, scaleFactorY);
// Draw the IMAGE
CGRect myRect = CGRectMake(0, 0, imageWidth, imageHeight);
[image drawInRect:myRect];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
Bao gồm mã sau trong lớp UIView thay thế "monk2.png" bằng tên hình ảnh của riêng bạn.
- (void)drawRect:(CGRect)rect {
UIImage *originalImage = [UIImage imageNamed:[NSString stringWithFormat:@"monk2.png"]];
CGFloat oImageWidth = originalImage.size.width;
CGFloat oImageHeight = originalImage.size.height;
// Draw the original image at the origin
CGRect oRect = CGRectMake(0, 0, oImageWidth, oImageHeight);
[originalImage drawInRect:oRect];
// Set the newRect to half the size of the original image
CGRect newRect = CGRectMake(0, 0, oImageWidth/2, oImageHeight/2);
UIImage *newImage = [self circularScaleAndCropImage:originalImage frame:newRect];
CGFloat nImageWidth = newImage.size.width;
CGFloat nImageHeight = newImage.size.height;
//Draw the scaled and cropped image
CGRect thisRect = CGRectMake(oImageWidth+10, 0, nImageWidth, nImageHeight);
[newImage drawInRect:thisRect];
}
Nếu bạn chỉ cần vòng tròn hoàn hảo, việc thay đổi hình dạng của UIImageView có thể hữu ích. Chỉ cần thêm khuôn khổ QuartzCore để dự án của bạn và thêm các dòng mã ở đâu đó trong vòng đời trước IMAGExem được hiển thị:
#import <QuartzCore/QuartzCore.h>
.
.
.
//to crop your UIImageView to show only a circle
yourImageView.layer.cornerRadius = yourImageView.frame.size.width/2;
yourImageView.clipsToBounds = YES;
Câu trả lời năng động này là câu trả lời tốt hơn nhiều so với câu trả lời được chọn. –
Để thực hiện một hình ảnh RoundShape
Bước 1: trong file .h
@property (strong, nonatomic) IBOutlet UIImageView *songImage;
Bước 2: in.m tập tin
- (void)viewDidLoad
{
self.songImage.layer.cornerRadius = self.songImage.frame.size.width/2;
self.songImage.clipsToBounds = YES;
//To give the Border and Border color of imageview
self.songImage.layer.borderWidth = 1.0f;
self.songImage.layer.borderColor = [UIColor colorWithRed:249/255.0f green:117/255.0f blue:44/255.0f alpha:1.0f].CGColor;
}
HOẶC Đối Swift
cell.songImage.layer.cornerRadius = cell.songImage.frame.size.width/2;
cell.songImage.clipsToBounds = true
//To give the Border and Border color of imageview
cell.songImage.layer.borderWidth = 1.0
cell.songImage.layer.borderColor = UIColor(red: 50.0/255, green: 150.0/255, blue: 65.0/255, alpha: 1.0).CGColor
Để có IMAGExem hình oval không phải là khó khăn.
Bạn có thể làm như sau
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:yourImageView.bounds];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.path = path.CGPath;
yourImage.layer.mask = maskLayer;
Nếu rect truyền cho bezierPathWithOvalInRect là Quảng trường hình ảnh sẽ được cắt vào cộng đồng.
Swift Mã
let path = UIBezierPath(ovalIn: yourImageView.bounds)
let maskLayer = CAShapeLayer()
maskLayer.path = path.cgPath
yourImage.layer.mask = maskLayer
tính năng này phù hợp với tôi. –
tôi có thể sử dụng uiview thay vì uiimage để làm hình bầu dục không? –
Làm thế nào để cắt hình dạng hình bầu dục cho mục tiêu c? –
SWIFT
var vwImage = UIImageView(image: UIImage(named: "Btn_PinIt_Normal.png"))
vwImage.frame = CGRectMake(0, 0, 100, 100)
vwImage.layer.cornerRadius = vwImage.frame.size.width/2
SWIFT 3 câu trả lời xuất phát từ @Mohammad Sadiq
let path = UIBezierPath.init(ovalIn: workingImgaeView.bounds)
let maskLayer = CAShapeLayer(layer: layer)
maskLayer.path = path.cgPath
workingImgaeView.layer.mask = maskLayer
- 1. Hình dạng hình bầu dục CSS cắt ra từ div
- 2. Hình chữ nhật CSS có một cạnh hình bầu dục
- 3. Làm thế nào để vẽ một hình bầu dục mịn trong vải
- 4. Tại sao matplotlib vẽ biểu đồ vòng tròn của tôi dưới dạng hình bầu dục?
- 5. SVG - Làm thế nào để cắt ảnh thành hình tròn?
- 6. Có cách nào để vẽ một CGContextDrawRadialGradient như một hình bầu dục thay vì một vòng tròn hoàn hảo?
- 7. CSS/JS để cắt xén hình tròn
- 8. Mặt cắt hình tròn có hình tròn với Path.addArc?
- 9. Làm thế nào để tạo các góc hình chữ nhật tròn trên (hoặc dưới) trong Silverlight?
- 10. MATLAB: làm thế nào để cắt ra một vòng tròn từ một hình ảnh
- 11. Cắt hình vuông thành hình tròn - Lập trình
- 12. Cắt hình tròn ra khỏi hình ảnh bằng RMagick
- 13. Làm cách nào để cắt hình vuông trung tâm trong UIImage?
- 14. Làm thế nào để vẽ một hình trên một UIImage đồng thời tôn trọng alpha của hình ảnh mặt nạ
- 15. Cắt UIImage thành alpha
- 16. Làm thế nào để có một TextView tròn
- 17. Vẽ một hình ảnh khác trên UIImage
- 18. Tạo các góc/cạnh mờ trên UIImage (không hoạt hình)
- 19. Làm thế nào để cắt một hình ảnh trong vb.net?
- 20. Làm thế nào để cắt một hình ảnh trong Android?
- 21. Làm thế nào để có được hình tròn trong Android
- 22. Trên Android, làm cách nào để tạo các vùng cắt hình kỳ lạ?
- 23. Làm cách nào để cắt hình ảnh dựa trên hình dạng không đều?
- 24. Làm thế nào để cắt & điền bằng Paperclip (hoặc RMagick)?
- 25. Làm thế nào để vẽ hình tròn, hình chữ nhật theo cách thủ công trên máy quay video android
- 26. Làm thế nào để cắt một hình ảnh với một hình chữ nhật xoay?
- 27. Cách vẽ hình ảnh điểm trên cạnh hình tròn
- 28. Làm thế nào để vẽ một hình chữ nhật tròn (hình chữ nhật với các góc tròn) với OpenCV?
- 29. Bất kỳ kỹ thuật css hoặc javascript nào để hiển thị 'lát cắt' của hình ảnh vòng tròn?
- 30. Góc tròn iOS UIImage với đường viền
Bạn đang thiếu '[imageLayer setMasksToBounds: YES];' :) –
Có, Bạn phải sử dụng đề xuất của Andres để cắt hình ảnh vào hình dạng của ImageView – Shailesh
Miễn là hình ảnh là hình vuông, bạn có thể nhận được vòng tròn hoàn hảo bằng cách lấy một nửa chiều rộng làm bán kính góc: [imageView.layer setCornerRadius: imageView.frame.size.width/2]; self.imageView.layer.masksToBounds = YES; –