首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

调整透明图像(UIImage)的大小而不获取黑色背景

调整透明图像(UIImage)的大小而不获取黑色背景,可以通过以下步骤实现:

  1. 获取原始图像的尺寸和透明度信息。
    • 尺寸可以通过UIImage对象的size属性获取。
    • 透明度信息可以通过UIImage对象的CGImage属性获取,然后使用CGImageGetAlphaInfo函数获取。
  • 创建一个基于位图的图形上下文,用于绘制调整后的图像。
    • 使用UIGraphicsBeginImageContextWithOptions函数创建图形上下文。
    • 设置图形上下文的尺寸为目标大小,并设置透明度信息。
  • 在图形上下文中绘制调整后的图像。
    • 使用draw(in: CGRect)方法将原始图像绘制到图形上下文中。
    • 绘制时,使用目标大小作为绘制区域,保持图像的纵横比。
  • 从图形上下文中获取调整后的图像。
    • 使用UIGraphicsGetImageFromCurrentImageContext函数获取图像。
    • 使用UIGraphicsEndImageContext函数结束图形上下文。

下面是一个示例代码,展示了如何实现上述步骤:

代码语言:txt
复制
func resizeTransparentImage(image: UIImage, targetSize: CGSize) -> UIImage? {
    let imageSize = image.size
    let alphaInfo = image.cgImage?.alphaInfo
    
    UIGraphicsBeginImageContextWithOptions(targetSize, alphaInfo != .none ? false : true, image.scale)
    
    image.draw(in: CGRect(origin: .zero, size: targetSize))
    
    let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    
    return resizedImage
}

这个方法接受一个UIImage对象和目标大小作为参数,并返回调整后的图像。调用示例:

代码语言:txt
复制
let originalImage = UIImage(named: "originalImage.png")
let targetSize = CGSize(width: 200, height: 200)

if let resizedImage = resizeTransparentImage(image: originalImage, targetSize: targetSize) {
    // 使用调整后的图像
} else {
    // 调整图像失败
}

这个方法会根据目标大小调整图像的尺寸,并保持图像的透明度信息。返回的图像可以直接用于显示或保存等操作。

推荐的腾讯云相关产品:腾讯云图像处理(Image Processing)服务,该服务提供了丰富的图像处理功能,包括图像缩放、裁剪、旋转等操作,可以满足调整图像大小的需求。产品介绍链接地址:https://cloud.tencent.com/product/imgpro

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Swift-图像性能优化

一般指定颜色时候建议使用透明色,透明色执行效率低 Color Copied Images(图像复制->几乎用不到) 有时候寄宿图片(layer.content)生成是由Core Animation...)但是由于是不透明模式,所以看不到下面的颜色,默认看到了黑色背景。...证明有图层叠加运算,因此,不能采用透明模式。 解决办法:给背景设置一个颜色,使其不显示默认黑色。...这样就可以解决四个角显示黑色问题,并且在混合模式状态下不会再有红色显示,性能可以非常好。 开发过程中,用颜色比用图片性能会高一点。 不到万不得已,View背景色尽量不要设置成透明颜色。...背景被填充黑色,在你图形以外范围内会被看见。

1.6K70

Metal入门教程(八)Metal与OpenGL ES交互

正文 UIImage是我们常用图像类,可以转成CVPixelBufferRef,表示存储在内存图像数据; id 是Metal纹理,表示是存储在显存图像数据; GLuint...首先猜测点是因为图片本身不透明,导致底为黑色;这个通过UIImageView渲染效果排除; 其次猜测是OpenGL ES渲染时候,把透明部分设置成黑色;下面一段是shader 代码: varying...但这个并不是问题所在,因为这里只决定三角形区域内像素点颜色,黑色部分为背景,并不受shader影响。 通过上面的猜测,发现问题可能在glClearColor设置了不透明颜色。...检查代码果然有一行glClearColor(0.0f, 0.0f, 0.0f, 1.0f);,把背景设置成不透明黑色!...但在把这段代码修改成glClearColor(0.0f, 0.0f, 0.0f, 0.0f);,发现黑色背景依旧没有消除!这次问题出现在哪里?

2.3K10

iOS状态栏设置

接口,用此接口也会改变statusBar背景色 注意:一旦你设置了navigationBar- (void)setBackgroundImage:(UIImage *)backgroundImage...forBarMetrics:(UIBarMetrics)barMetrics接口 那么上面的setBarTintColor接口就不能改变statusBar背景色,statusBar背景色就会变成纯黑色...另辟蹊径 创建一个UIView 设置该UIViewframe.size 和statusBar大小一样 设置该UIViewframe.origin 为{0,-20} 设置该UIView背景色为你希望...=false也就是不透明时,可以去掉navigationBar下黑线,代码如下 //去掉navigationBar下黑线 appear.setBackgroundImage(UIImage(), forBarMetrics...下黑线,会导致状态栏颜色与navigationBar背景色不同,暂没找到好解决方法 6) 设置navigationBar背景透明方式 跟去黑线方式相同

2.6K11

iOS MachineLearning 系列(9)—— 人物蒙版图生成

无光蒙版在实际业务中非常有用,使用此蒙版可以方便将人物从图片中提取出来,然后和其他背景图进行合成。...// 图像分析请求 lazy var imageRequestHandler = VNImageRequestHandler(ciImage: CIImage(cgImage: image.cgImage...,这里讲所有黑色替换成透明色 let filter = CIFilter(name: "CIMaskToAlpha", parameters: [kCIInputImageKey: ciImage...(v) } } 效果如下图: 2 - 进行人物提取 获取到了蒙版,提取人物将很简单,修改上述代码如下: private func drawTask(request: VNGeneratePersonSegmentationRequest...: https://github.com/ZYHshao/MachineLearnDemo VNGeneratePersonSegmentationRequest结合CIFilter使用,可以方便进行背景合成

49520

iOS中UISearchBar(搜索框)使用总结

UIBarStyleBlack            = 1,//黑色风格,黑色搜索框     //下面两个枚举已经被禁用,作用和黑色风格一样     UIBarStyleBlackOpaque...) UIImage *backgroundImage; 设置搜索框背景图案 @property(nonatomic,retain) UIImage *scopeBarBackgroundImage;...barMetrics:(UIBarMetrics)barMetrics 这一对方法可以设置和获取某个状态枚举下搜索框背景图案 - (void)setSearchFieldBackgroundImage...:(UIControlState)state; 这一对方法用于设置和获取搜索框中TextField背景图案 - (void)setImage:(UIImage *)iconImage forSearchBarIcon...:(UIControlState)state; 这一对方法用于设置和获取搜索框附加选择按钮视图背景图案 - (void)setScopeBarButtonDividerImage:(UIImage

2.5K10

【IOS开发基础系列】Navigation页面导航专题

if (viewController == self) {         //背景设置为黑色         self.navigationController.navigationBar.tintColor...removing-the-title-text-of-an-ios-7-uibarbuttonitem 2.5.4 隐藏返回按钮 [self.navigationItem setHidesBackButton: YES]; 2.5.5 设置导航栏标题字体颜色和大小...    方法一:(自定义视图方法,一般人也会采用这样方式)         就是在导航向上添加一个titleView,可以使用一个label,再设置label背景颜色透明,字体什么设置就很简单了...NSTextAlignmentCenter; titleLabel.text = @"新闻"; self.navigationItem.titleView = titleLabel;     方法二:(在默认显示标题中直接修改文件大小和颜色也是可以...否则会导致页面切换时选中状态不准确         TabBar与导航条混用时,TabBarItem设置是在NavigationController中,不是内容Controller中,切记!!!

33820

编码篇-iOS开发中奇巧小伎

某个角添加圆角 13.将一个view放置在其兄弟视图最上面、最下面 14.让手机震动一下 15.摇一摇功能 16.修改UISegmentedControl字体大小 17.获取一个view所属控制器...45、使用xib设置UIView边框、圆角 46、将一个xib添加到另外一个xib上 47、处理字符串,使其首字母大写 48、获取字符串中数字 49、自动搜索功能,用户连续输入时候搜索,用户停止输入时候自动搜索...52、修改键盘背景颜色 53.本来我statusbar是lightcontent,结果用UIImagePickerController会导致我statusbar样式变成黑色 54.把navigationbar...弄成透明不是带模糊效果,(亲测有效) 诸技罗列 1.TableView不显示没内容Cell self.tableView.tableFooterView = [[UIView alloc] init...UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; } 54.把navigationbar弄成透明不是带模糊效果

5.3K10

【IOS开发高级系列】异步绘制专题

source, const CGFloat decode[], boolshouldInterpolate, CGColorRenderingIntent intent) 通过JPEG数据源获取图像...()返回数据量大小为199K , UIImageJPEGRepresentation(UIImage* image, 1.0)返回数据量大小只为140KB,比前者少了50多KB.如果对图片清晰度要求不高...* image, 1.0)读取数据时,返回数据大小为140KB,但更改压缩系数后,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)读取数据时,返回数据大小只有...p=9 用UIImage和UIButton画出按钮,使用透明png图片,为什么会出现白边 http://segmentfault.com/q/1010000000095447 JPG、PNG和GIF...问题原因: 将Text做宽高计算时,高度值容易得出小数数值,页面绘制均是基于整数像素点绘制,对于小数点部分,系统会做舍去处理(即便有缩放),固留下高度不定未绘制区域(为黑色)。

1.3K20

IOS开发系列——异步绘制专题

source, constCGFloat decode[],bool shouldInterpolate, CGColorRenderingIntent intent) 通过JPEG数据源获取图像...()返回数据量大小为199K , UIImageJPEGRepresentation(UIImage* image, 1.0)返回数据量大小只为140KB,比前者少了50多KB.如果对图片清晰度要求不高...*image, 1.0)读取数据时,返回数据大小为140KB,但更改压缩系数后,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)读取数据时,返回数据大小只有...p=9 用UIImage和UIButton画出按钮,使用透明png图片,为什么会出现白边 http://segmentfault.com/q/1010000000095447 JPG、PNG和GIF...问题原因: 将Text做宽高计算时,高度值容易得出小数数值,页面绘制均是基于整数像素点绘制,对于小数点部分,系统会做舍去处理(即便有缩放),固留下高度不定未绘制区域(为黑色

1.4K20

iOS开发UINavigation系列一——导航栏UINavigtionBar

我们也可以设置导航栏风格属性,从iOS6之后,UINavigationBar默认为半透明样式,从上面也可以看出,白色导航栏下面透出些许背景红色。...} 默认风格就是我们上面看到白色风格,黑色风格效果瑞如下: ?...三、导航栏常用属性和方法         从上面我们可以看到,iOS6后导航栏默认都是半透明,我们可以通过下面的bool值来设置这个属性,设置为NO,则导航栏不透明,默认为YES: @property...@property(nullable, nonatomic,strong) UIColor *barTintColor; BarTintColor用于设置导航栏背景色,这个属性被设置后,半透明效果将失效...)barMetrics; 上面两个方法用于设置和获取导航栏背景图案,这里需要注意,默认背景图案是不做缩放处理,所以我们使用图片尺寸要和导航栏尺寸匹配,这里面还有一个UIBarMetrics参数,这个参数设置设备状态

95831

iOS系统中导航栏转场解决方案与最佳实践

在 Web 端里,opacity 是设定整个元素透明值, alpha 一般是放在颜色设置里面,所以我们可以做到对特定对元素某个属性设定 alpha,比如背景、边框、文字等。...对齐问题,这个属性并不会调整 UIViewController 大小。...对于 UIView 是一个 UIScrollView 类或者子类且导航栏背景色是不透明状态时,我们会发现使用 edgesForExtendedLayout 来调整 UIViewController...大小是无效,这时候你必须使用 extendedLayoutIncludesOpaqueBars 来调整 UIViewController 大小,可以认为 extendedLayoutIncludesOpaqueBars...大型 App 导航栏问题就像一个典型“公地悲剧”问题。在软件行业,公用代码所有权可以被视作“公地”,因为注重长期需求容易遭到消耗。

2.3K30

直播APP常用动画效果

烟花 图片压缩、加载与裁剪 1、图片压缩 美术给出图片,即使是压缩过,仍存在较大压缩空间,可以用这里或者更好大小优化。...3、图片裁剪 为了减少图片资源大小,有时候会把多个帧动画做成连续一张图。这时需要程序加载一整张资源图,并在相应位置进行裁剪。...,把背景设置成淡黑色,然后调整alpha可以达到背景渐变视图效果; UIViewtransform是可以用仿射变换矩阵来控制平移、放大缩小等。...天使动画图片大小为900KB,运行时占内存15MB,播放完毕后,如果收到内存不足警告会释放内存; 烟花动画图片大小为400KB,运行时占用内存为20MB,播放完毕后,会马上释放内存; 思考题?...1、为什么烟花动画图片大小比较小,运行时占用内存反而更多? 2、播放完毕马上释放和收到内存不足警告再释放,两种图片加载方式优缺点?

1.6K80

iOS开发CoreGraphics核心图形框架之二——深入理解图形上下文

_t, CGBlendMode) { //在背景图像之上绘制原图像 kCGBlendModeNormal, //将背景与原图像进行混合 kCGBlendModeMultiply..., //将背景与原图像进行逆向混合 kCGBlendModeScreen, //覆盖原图像 同时保持背景阴影 kCGBlendModeOverlay, //进行灰度复合...kCGBlendModeColorBurn, //复合时 根据黑白色值比例进行复合 kCGBlendModeSoftLight, kCGBlendModeHardLight, //复合时 将原图像中有关背景图像色值去除...//R 结果 //S 原图像 //D 背景图像 //Ra Sa Da为带透明alpha通道 kCGBlendModeClear,.../* R = MIN(1, S + D) */ }; 下面这些方法用于操作位图图形上下文: //这个方法会创建一个位图图形上下文 并将其push进图形上下文栈中 size参数设置图像大小

2.6K20

photoshop学习笔记

画笔面板F5 画笔笔尖形状:画笔样式,大小,间距 形状动态:大小抖动,角度抖动 散布:散布,数量 颜色动态:前景到背景抖动,色相抖动 传递:不透明抖动 画笔描边路径: 用画笔样式描边路径得到非常绚丽效果...通道中白色表示相应色值达到最大,黑色表示相应色值达到最小, 灰色表示有相应色值,越靠近白色,色值越大,越靠近黑色,色值越小 (四)调色和校色 校色:当图像偏色时,通过调色工具对其进行校正 调色:把图像从一个色调调整到另一个色调...色阶:CTRL+L 标准图像:有高光,中间调,暗调,并且平均分布 色阶用来调整图像明暗(RGB通道) 灰平衡:图像通过灰色滑块调整,达到平衡 调整偏色图像: 1,先分析图像偏什么色(红,绿,蓝,...常用快捷键: F5画笔面板,F6颜色面板,f7,图层面板,F8信息面板 (二)具体混合模式: 溶解:让图像中出现杂色(背景颜色),条件:降低不透明度 正片叠底:去亮留暗(去白留黑) 特点:去除亮色...图层蒙版中黑白灰意义: 黑色表示透明(遮罩) 白色表示不透明(显示) 灰色表示半透明(过渡状态) 蒙版使用注意事项: 1,当用画笔涂抹后,画面没有透明而是变成了黑白色,检查是否选中了蒙版,很有可能选中是图层缩略图

3.1K20

【IOS开发基础系列】Table View开发专题

第三种: 当背景横向为 有规律 色变 时候可以取背景图片 产生出一个color ok  fuelsTabelView.separatorColor = [UIColor colorWithPatternImage...       不透明视图可以极大地提高渲染速度。...其中特例包括背景色,它alpha值应该为1(例如不要使用clearColor);图像alpha值也应该为1,或者在画图时设为不透明。...这个例子中,layer并不会显著影响性能,但如果layer透明,或者有圆角、变形等效果,就会影响到绘制速度了。解决办法可参见后面的预渲染图像。 2.4.1.4 不要做多余绘制工作。      ...解决办法就是在bitmap context里先将其画一遍,导出成UIImage对象,然后再绘制到屏幕,详细做法可见《利用预渲染加速iOS设备图像显示》。

27820

视觉效果 -- iOS Core Animation 系列三

CALayer有一个conrnerRadius属性控制图层圆角曲率,默认值为0。这个曲率值默认只影响背景颜色不影响背景图片或者子图层。可以用过下面的示例看一下。...通过上面的示例可以发现: 只设置cornerRadius时,默认情况下,只影响背景颜色,不影响背景图片或者子图层。 如果想要截取这个视图图片和子视图,需要设置masksToBounds为YES。...shadowColor属性控制着阴影颜色,和borderColor一样,它类型也是CGColorRef,阴影默认是黑色。...阴影裁剪 和图层边框不同,图层阴影继承自内容外形,不是根据边界来界定。...但是如果图层包含一个同样显示50%透明子图层时,你所看到视图,50%来自子视图,25%来了图层本身颜色,另外25%则来自背景色。 如果想保持透明度一直。

1.1K30
领券