首页 > 其他分享 >iOS开发-图片UIImage

iOS开发-图片UIImage

时间:2024-07-06 20:19:31浏览次数:18  
标签:imageData image iOS UIImageView 图像 imageView UIImage 图片

UIImageUIImageView 是 iOS 开发中常用的两个类,分别用于表示图像数据和显示图像。

UIImage

UIImage 是一个表示图像数据的类,可以从文件、数据、图像资源库等加载图像。UIImage 支持多种图像格式,包括 PNG、JPEG、GIF 等。

创建 UIImage

  1. 从文件创建

    UIImage *image = [UIImage imageNamed:@"exampleImage"];
    
  2. 从数据创建

    NSData *imageData = [NSData dataWithContentsOfFile:@"path/to/image"];
    UIImage *image = [UIImage imageWithData:imageData];
    
  3. 从 URL 创建

    NSURL *imageUrl = [NSURL URLWithString:@"https://example.com/image.png"];
    NSData *imageData = [NSData dataWithContentsOfURL:imageUrl];
    UIImage *image = [UIImage imageWithData:imageData];
    
  4. 从颜色创建

    UIColor *color = [UIColor redColor];
    CGSize size = CGSizeMake(100, 100);
    UIGraphicsBeginImageContext(size);
    [color setFill];
    UIRectFill(CGRectMake(0, 0, size.width, size.height));
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    

处理 UIImage

  • 获取图像尺寸

    CGSize imageSize = image.size;
    
  • 获取图像的缩放比例

    CGFloat scale = image.scale;
    
  • 保存图像到文件

    NSData *imageData = UIImagePNGRepresentation(image);
    [imageData writeToFile:@"path/to/save.png" atomically:YES];
    

UIImageView

UIImageView 是一个用于显示图像的视图类。它可以显示 UIImage 对象,并提供了一些方便的方法来调整图像的显示方式。

  • 创建 UIImageView

    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    imageView.frame = CGRectMake(50, 50, 100, 100);
    

配置 UIImageView

  • 设置图像

    imageView.image = image;
    
  • 内容模式

    UIImageView 提供了多种内容模式,用于控制图像如何在视图中显示:

    imageView.contentMode = UIViewContentModeScaleAspectFit;  // 保持比例适应视图
    imageView.contentMode = UIViewContentModeScaleAspectFill; // 保持比例填充视图,可能会裁剪图像
    imageView.contentMode = UIViewContentModeCenter;          // 居中显示图像
    
  • 设置边框和圆角

    imageView.layer.borderColor = [UIColor blackColor].CGColor;
    imageView.layer.borderWidth = 2.0;
    imageView.layer.cornerRadius = 10.0;
    imageView.clipsToBounds = YES;
    

动画 UIImageView

  • 逐帧动画

    UIImageView 可以通过设置 animationImages 属性来播放逐帧动画:

    imageView.animationImages = @[image1, image2, image3];
    imageView.animationDuration = 1.0;  // 动画时长
    imageView.animationRepeatCount = 0; // 无限循环
    [imageView startAnimating];
    

使用示例

以下是一个完整的示例,展示了如何使用 UIImageUIImageView

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@end

ViewController.m

#import "ViewController.h"

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    
    // 创建 UIImage 对象
    UIImage *image = [UIImage imageNamed:@"exampleImage"];
    
    // 创建 UIImageView 对象并设置图像
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    imageView.frame = CGRectMake(50, 50, 200, 200);
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    imageView.layer.borderColor = [UIColor blackColor].CGColor;
    imageView.layer.borderWidth = 2.0;
    imageView.layer.cornerRadius = 10.0;
    imageView.clipsToBounds = YES;
    [self.view addSubview:imageView];
    
    // 动画 UIImageView
    UIImage *image1 = [UIImage imageNamed:@"frame1"];
    UIImage *image2 = [UIImage imageNamed:@"frame2"];
    UIImage *image3 = [UIImage imageNamed:@"frame3"];
    UIImageView *animatedImageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 300, 200, 200)];
    animatedImageView.animationImages = @[image1, image2, image3];
    animatedImageView.animationDuration = 1.0;
    animatedImageView.animationRepeatCount = 0;
    [animatedImageView startAnimating];
    [self.view addSubview:animatedImageView];
}

@end

标签:imageData,image,iOS,UIImageView,图像,imageView,UIImage,图片
From: https://www.cnblogs.com/zjq1999/p/18287683

相关文章

  • Python以中心裁剪图片,一个中国大陆身份证的尺寸是88mm*55mm,通常使用的身份证像素分辨
    1#以中心裁剪图片2#一个中国大陆身份证的尺寸是88mm*55mm,通常使用的身份证像素分辨率是336*2563defcrop_image_by_center(input_image_path,width_mm=88,height_mm=55):4#打开图片5image=Image.open(input_image_path)6image=ImageOps.ex......
  • Python按证件照实际大小调整图片尺寸,2英寸证件照:35mmx49mm
    #按证件照实际大小调整图片尺寸,2英寸证件照:35mmx49mm(2024年7月6日)defresize_image_by_ip(input_image_path,width_mm=35,height_mm=49):input_image_path=Path(input_image_path)image=Image.open(input_image_path).convert('RGB')#打开图片,并转换为RGB模......
  • [python]Markdown图片引用格式批处理桌面应用程序
    需求使用python编写一个exe,实现批量修改图片引用,将修改后的文件生成为文件名_blog.md。有一个编辑框,允许接收拖动过来md文件,拖入文件时获取文件路径,有一个编辑框编辑修改后的文件的输出路径,用户拖入文件时,就能自动得到输出的路径作用是将md文件中的例如![image-20240706062921......
  • VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS HPE (慧与) 定制版
    VMwareESXi8.0U3macOSUnlocker&OEMBIOSHPE(慧与)定制版ESXi8.0U3标准版,Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)、Hitachi(日立)、Fujitsu(富士通)、NEC(日电)、Huawei(华为)、xFusion(超聚变)OEM定制版请访问原文链接:ht......
  • [python]Markdown图片引用格式批处理桌面应用程序
    需求使用python编写一个exe,实现批量修改图片引用,将修改后的文件生成为文件名_blog.md。有一个编辑框,允许接收拖动过来md文件,拖入文件时获取文件路径,有一个编辑框编辑修改后的文件的输出路径,用户拖入文件时,就能自动得到输出的路径作用是将md文件中的例如![image-20240706062921......
  • 【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
    问题描述iOS Objective-C应用,连接AzureStorageAccount,根据官网Example代码,在没有关闭StorageAccount的匿名访问时,程序正常运行。但是,只要关闭了匿名访问,上传blob到Container中,就会报错:Publicaccessisnotpermittedonthisstorageaccount  问题解答查看示例......
  • python实现从某个网址爬取图片到本地电脑
    源码如下:importurllib#导入urllib包importurllib.request#导入urllib包里的request方法importre#导入re正则库#这个函数实现打开传入的路径并将页面数据读取出来,实现代码,包括发送请求,打开页面,获取数据。defload_page(url):    request=urllib.request.Req......
  • ios CCNetwork.m
    ////CCNetwork.h//CCFC////Createdbyxichenon11-12-23.//Copyright2011ccteam.Allrightsreserved.//#import<Foundation/Foundation.h>#include<ifaddrs.h>#include<sys/socket.h>#include<net/if.h>#defineMAC......
  • ios CCPhone.m
    ////CCPhone.h//CCFC////Createdbyxichenon11-12-16.//Copyright2011年ccteam.Allrightsreserved.//#import<Foundation/Foundation.h>#import<UIKit/UIKit.h>#import"CCConfig.h"#import"CCDepend.h"#impo......
  • EasyExcel 单元格根据图片数量动态设置宽度
    在使用EasyExcel导出Excel时,如果某个单元格是图片内容,且存在多张图片,此时就需要单元格根据图片数量动态设置宽度。经过自己的研究和实验,导出效果如下:具体代码如下:EasyExcel版本<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactI......