উত্তর:
OS> 3.0 এর সাহায্যে আপনি এটি করতে পারেন:
//you need this import
#import <QuartzCore/QuartzCore.h>
[imageView.layer setBorderColor: [[UIColor blackColor] CGColor]];
[imageView.layer setBorderWidth: 2.0];
UIImage
কোরগ্রাফিক্স সহ গ্রাফিক্সের প্রসঙ্গে আঁকতে পারে।
আপনি একটি নতুন চিত্র তৈরি করে এটি করতে পারেন (আপনার এই প্রশ্নের অন্যান্য পোস্টেও উত্তর দেওয়া হয়েছে):
- (UIImage*)imageWithBorderFromImage:(UIImage*)source;
{
CGSize size = [source size];
UIGraphicsBeginImageContext(size);
CGRect rect = CGRectMake(0, 0, size.width, size.height);
[source drawInRect:rect blendMode:kCGBlendModeNormal alpha:1.0];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(context, 1.0, 0.5, 1.0, 1.0);
CGContextStrokeRect(context, rect);
UIImage *testImg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return testImg;
}
এই কোডটি ইমেজটির চারপাশে গোলাপী সীমানা তৈরি করবে। তবে আপনি যদি কেবল সীমান্ত প্রদর্শন করতে যাচ্ছেন তবে তার স্তরটি ব্যবহার করুন UIImageView
এবং এর সীমানাটি সেট করুন।
CGContextSetLineWidth
size
320x480 হোক বা না হোক আপনি যদি একটি অক্ষিপট ডিভাইসে থাকেন নির্বিশেষে, তাই যখন আপনি চিত্র সংরক্ষণ, এটা যে 320x480px রেজল্যুশন, না 640x960 এ সংরক্ষণ করে।
#import <QuartzCore/CALayer.h>
UIImageView *imageView = [UIImageView alloc]init];
imageView.layer.masksToBounds = YES;
imageView.layer.borderColor = [UIColor blackColor].CGColor;
imageView.layer.borderWidth = 1;
এই কোডটি UIImageView
দেখার সীমানা যুক্ত করার জন্য ব্যবহার করা যেতে পারে ।
imageView_ProfileImage.layer.cornerRadius =10.0f;
imageView_ProfileImage.layer.borderColor = [[UIColor blackColor] CGColor];
imageView_ProfileImage.layer.borderWidth =.4f;
imageView_ProfileImage.layer.masksToBounds = YES;
যদি আপনি নিজের চিত্রের মাত্রা জানেন তবে ইউআইআইমেজভিউর স্তরের একটি সীমানা যুক্ত করাই সেরা সমাধান আফাইক AI প্রকৃতপক্ষে, আপনি কেবল নিজের চিত্র ফ্রেমটি এক্স, ওয়াই, ইমেজ.সাইজ.উইথ, ইমেজ.সাইজ.হাইটে সেট করতে পারেন
যদি আপনার ডায়নামিকালি লোড হওয়া চিত্রগুলির সাথে একটি নির্দিষ্ট আকারের একটি চিত্রের ভিউ থাকে যা পুনরায় আকার দেওয়া হচ্ছে (বা AspectFit এ মাপসই করা হচ্ছে), তবে আপনার লক্ষ্যটি চিত্রের ভিউটিকে নতুন আকারযুক্ত চিত্রটিতে পুনরায় আকার দেওয়া।
এটি করার সবচেয়ে সংক্ষিপ্ততম উপায়:
// containerView is my UIImageView
containerView.layer.borderWidth = 7;
containerView.layer.borderColor = [UIColor colorWithRed:0.22 green:0.22 blue:0.22 alpha:1.0].CGColor;
// this is the key command
[containerView setFrame:AVMakeRectWithAspectRatioInsideRect(image.size, containerView.frame)];
তবে AVMakeRectWithAspectRatioInsideRect ব্যবহার করার জন্য আপনাকে এটি যুক্ত করতে হবে
#import <AVFoundation/AVFoundation.h>
আপনার ফাইলটিতে বিবৃতি আমদানি করুন এবং আপনার প্রকল্পের এভিফাউন্ডেশন ফ্রেমওয়ার্কটিও অন্তর্ভুক্ত করুন (এসডিকে দিয়ে বান্ডেল হয়ে আসে)।
আপনি কোনও সীমানা যুক্ত করতে পারবেন না, তবে এটি একই প্রভাবের জন্য কাজ করবে। আপনি এই উদাহরণে ব্ল্যাকবিজি নামে পরিচিত ইউআইভিউও বর্ডার ইমেজ এবং ফাঁকা মাঝারি দিয়ে একটি ইউআইআইমেজভিউতে পরিণত করতে পারেন এবং তারপরে কেবল কালো রঙের পরিবর্তে আপনার পছন্দসই চিত্রের একটি সীমানা রয়েছে।
UIView *blackBG = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)];
blackBG.backgroundColor = [UIColor blackColor];
UIImageView *myPicture = [[UIImageView alloc] initWithImage:
[UIImage imageNamed: @"myPicture.jpg"]];
int borderWidth = 10;
myPicture.frame = CGRectMake(borderWidth,
borderWidth,
blackBG.frame.size.width-borderWidth*2,
blackBG.frame.size.height-borderWidth*2)];
[blackBG addSubview: myPicture];
UIImageView
কিছুটা বৃহত্তর কেন্দ্রে আমার বাসা বাঁধছে UIView
।
এই সমস্ত উত্তর সূক্ষ্মভাবে কাজ করে তবে একটি ছবিতে একটি রেক্ট যুক্ত করে। মনে করুন আপনার একটি আকৃতি রয়েছে (আমার ক্ষেত্রে একটি প্রজাপতি) এবং আপনি একটি সীমানা (একটি লাল সীমানা) যুক্ত করতে চান:
আমাদের দুটি পদক্ষেপের প্রয়োজন: 1) চিত্রটি গ্রহণ করুন, সিজিআইমেজে রূপান্তর করুন, কোরগ্রাফিক্স ব্যবহার করে একটি প্রসঙ্গে অফস্ক্রিন আঁকতে কোনও ফাংশনে যেতে হবে এবং একটি নতুন সিজিআইমেজ ফিরিয়ে দিন
2) uiimage ফিরে রূপান্তর এবং অঙ্কন:
// remember to release object!
+ (CGImageRef)createResizedCGImage:(CGImageRef)image toWidth:(int)width
andHeight:(int)height
{
// create context, keeping original image properties
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, width,
height,
8
4 * width,
colorspace,
kCGImageAlphaPremultipliedFirst
);
CGColorSpaceRelease(colorspace);
if(context == NULL)
return nil;
// draw image to context (resizing it)
CGContextSetInterpolationQuality(context, kCGInterpolationDefault);
CGSize offset = CGSizeMake(2,2);
CGFloat blur = 4;
CGColorRef color = [UIColor redColor].CGColor;
CGContextSetShadowWithColor ( context, offset, blur, color);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), image);
// extract resulting image from context
CGImageRef imgRef = CGBitmapContextCreateImage(context);
CGContextRelease(context);
return imgRef;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
CGRect frame = CGRectMake(0,0,160, 122);
UIImage * img = [UIImage imageNamed:@"butterfly"]; // take low res OR high res, but frame should be the low-res one.
imgV = [[UIImageView alloc]initWithFrame:frame];
[imgV setImage: img];
imgV.center = self.view.center;
[self.view addSubview: imgV];
frame.size.width = frame.size.width * 1.3;
frame.size.height = frame.size.height* 1.3;
CGImageRef cgImage =[ViewController createResizedCGImage:[img CGImage] toWidth:frame.size.width andHeight: frame.size.height ];
imgV2 = [[UIImageView alloc]initWithFrame:frame];
[imgV2 setImage: [UIImage imageWithCGImage:cgImage] ];
// release:
if (cgImage) CGImageRelease(cgImage);
[self.view addSubview: imgV2];
}
আমি একটি সাধারণ প্রজাপতি এবং একটি লাল-সীমান্তযুক্ত বৃহত্তর প্রজাপতি যুক্ত করেছি।
আপনি ইউআইআইমেজভিউতে সীমানা যুক্ত করতে পারেন এবং তারপরে চিত্রের আকার অনুসারে ইউআইআইমেজভিউয়ের আকার পরিবর্তন করতে পারেন:
#import <QuartzCore/QuartzCore.h>
// adding border to the imageView
[imageView.layer setBorderColor: [[UIColor whiteColor] CGColor]];
[imageView.layer setBorderWidth: 2.0];
// resize the imageView to fit the image size
CGSize size = [image size];
float factor = size.width / self.frame.size.width;
if (factor < size.height / self.frame.size.height) {
factor = size.height / self.frame.size.height;
}
CGRect rect = CGRectMake(0, 0, size.width/factor, size.height/factor);
imageView.frame = rect;
নিশ্চিত করুন যে আপনি চিত্রটি দেখার উত্সটি কেন্দ্রে স্থাপন করেছেন
আপনি চিত্রটি নিজেরাই হেরফের করতে পারেন তবে আরও ভাল উপায় হ'ল কেবল এমন একটি ইউআইভিউ যুক্ত করুন যাতে ইউআইআইমেজভিউ থাকে এবং পটভূমিটিকে কালো করে দেওয়া হয়। তারপরে সেই ধারক দৃশ্যের আকারটি ইউআইআইমেজভিউয়ের থেকে কিছুটা বড় আকারে সেট করুন।
আরেকটি উপায় হ'ল সরাসরি ডিজাইনার থেকে করা।
আপনার চিত্র নির্বাচন করুন এবং "পরিচয় পরিদর্শক দেখান" এর নীচে যান।
এখানে আপনি ম্যানুয়ালি " ব্যবহারকারী সংজ্ঞায়িত রানটাইম বৈশিষ্ট্য" যুক্ত করতে পারেন :
layer.borderColor
layer.borderWidth
এই ফাংশনটি কালো সীমান্ত সহ আপনার চিত্র ফিরিয়ে দেবে এটি চেষ্টা করুন .. আশা করি এটি আপনাকে সহায়তা করবে
- (UIImage *)addBorderToImage:(UIImage *)image frameImage:(UIImage *)blackBorderImage
{
CGSize size = CGSizeMake(image.size.width,image.size.height);
UIGraphicsBeginImageContext(size);
CGPoint thumbPoint = CGPointMake(0,0);
[image drawAtPoint:thumbPoint];
UIGraphicsBeginImageContext(size);
CGImageRef imgRef = blackBorderImage.CGImage;
CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, size.width,size.height), imgRef);
UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGPoint starredPoint = CGPointMake(0, 0);
[imageCopy drawAtPoint:starredPoint];
UIImage *imageC = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return imageC;
}
সুইফ্ট 3-এ আপনি নিজেই এটি কীভাবে ইউআইআইজেইজে করবেন:
let size = CGSize(width: image.size.width, height: image.size.height)
UIGraphicsBeginImageContext(size)
let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
image?.draw(in: rect, blendMode: .normal, alpha: 1.0)
let context = UIGraphicsGetCurrentContext()
context?.setStrokeColor(red: 0, green: 0, blue: 0, alpha: 1)
context?.stroke(rect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.imageView.image = newImage
ইউআইআইমেজে প্লাগ-অ্যান্ড-প্লে সলিউশন যারা খুঁজছেন তাদের জন্য আমি এক্সটেনশন হিসাবে কোডি ম্যাসের উত্তর লিখেছিলাম।
ব্যবহার: let outlined = UIImage(named: "something")?.outline()
extension UIImage {
func outline() -> UIImage? {
let size = CGSize(width: self.size.width, height: self.size.height)
UIGraphicsBeginImageContext(size)
let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
self.draw(in: rect, blendMode: .normal, alpha: 1.0)
let context = UIGraphicsGetCurrentContext()
context?.setStrokeColor(red: 0, green: 0, blue: 0, alpha: 1)
context?.stroke(rect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
}
আমি একটি ক্লাস তৈরি করেছি যা ইমেজভিউ এইচ এ একটি বর্ডার যুক্ত করে। এই ক্লাসটি ইউআইআইমেজভিউয়ের পরিবর্তে ব্যবহার করুন I আমি ৪ এর প্যাডিং দিয়েছি your আপনি নিজের ইচ্ছানুযায়ী দিতে পারেন।
class UIBorderImageView: UIView {
private lazy var imageView: UIImageView = {
let imageView = UIImageView()
imageView.contentMode = .scaleAspectFit
imageView.translatesAutoresizingMaskIntoConstraints = false
return imageView
}()
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = UIColor.White()
self.layer.borderColor = UIColor.GreyMedium().cgColor
self.layer.borderWidth = 1.0
self.layer.cornerRadius = 4.0
self.layer.masksToBounds = true
self.setUpViews()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setUpViews(){
self.addSubview(imageView)
self.addConstraintsWithFormat(format: "H:|-4-[v0]-4-|", views: imageView)
self.addConstraintsWithFormat(format: "V:|-4-[v0]-4-|", views: imageView)
}
func configureImageViewWith(image:UIImage){
self.imageview.image = image
}}
আমি এই পদ্ধতিটি ব্যবহার করে চিত্রের বাইরে সীমানা যুক্ত করতে চাই । আপনি boderWidth
ধ্রুবক সীমানা প্রস্থ কাস্টমাইজ করতে পারেন ।
func addBorderToImage(image : UIImage) -> UIImage {
let bgImage = image.cgImage
let initialWidth = (bgImage?.width)!
let initialHeight = (bgImage?.height)!
let borderWidth = Int(Double(initialWidth) * 0.10);
let width = initialWidth + borderWidth * 2
let height = initialHeight + borderWidth * 2
let data = malloc(width * height * 4)
let context = CGContext(data: data,
width: width,
height: height,
bitsPerComponent: 8,
bytesPerRow: width * 4,
space: (bgImage?.colorSpace)!,
bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue);
context?.draw(bgImage!, in: CGRect(x: CGFloat(borderWidth), y: CGFloat(borderWidth), width: CGFloat(initialWidth), height: CGFloat(initialHeight)))
context?.setStrokeColor(UIColor.white.cgColor)
context?.setLineWidth(CGFloat(borderWidth))
context?.move(to: CGPoint(x: 0, y: 0))
context?.addLine(to: CGPoint(x: 0, y: height))
context?.addLine(to: CGPoint(x: width, y: height))
context?.addLine(to: CGPoint(x: width, y: 0))
context?.addLine(to: CGPoint(x: 0, y: 0))
context?.strokePath()
let cgImage = context?.makeImage()
let uiImage = UIImage(cgImage: cgImage!)
free(data)
return uiImage;
}