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

在swift 5中删除UIImage中的白色背景

在Swift 5中删除UIImage中的白色背景可以通过以下步骤实现:

  1. 首先,将UIImage转换为CGImage对象,可以使用UIImage的cgImage属性来完成:
代码语言:txt
复制
let image = UIImage(named: "your_image_name")
guard let cgImage = image?.cgImage else {
    // 处理转换失败的情况
    return
}
  1. 创建一个透明的图形上下文,大小与原始图像相同:
代码语言:txt
复制
let colorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue)
guard let context = CGContext(data: nil, width: cgImage.width, height: cgImage.height, bitsPerComponent: 8, bytesPerRow: 0, space: colorSpace, bitmapInfo: bitmapInfo.rawValue) else {
    // 处理创建图形上下文失败的情况
    return
}
  1. 在图形上下文中绘制图像,同时将白色背景替换为透明:
代码语言:txt
复制
let rect = CGRect(x: 0, y: 0, width: cgImage.width, height: cgImage.height)
context.draw(cgImage, in: rect)

let data = context.data
let buffer = data?.assumingMemoryBound(to: UInt8.self)

for i in 0..<(cgImage.width * cgImage.height * 4) {
    let alpha = buffer?[i + 3]
    let red = buffer?[i]
    let green = buffer?[i + 1]
    let blue = buffer?[i + 2]

    if red == 255 && green == 255 && blue == 255 {
        buffer?[i] = 0
        buffer?[i + 1] = 0
        buffer?[i + 2] = 0
        buffer?[i + 3] = 0
    }
}
  1. 从图形上下文中创建一个新的CGImage对象:
代码语言:txt
复制
guard let newCGImage = context.makeImage() else {
    // 处理创建新CGImage对象失败的情况
    return
}
  1. 将新的CGImage对象转换回UIImage对象:
代码语言:txt
复制
let newImage = UIImage(cgImage: newCGImage)

现在,你可以使用newImage对象,它是一个没有白色背景的UIImage。

在腾讯云的产品中,可以使用腾讯云的云函数(SCF)来实现这个功能。云函数是一种无服务器计算服务,可以在云端运行你的代码。你可以使用云函数来处理图像,包括删除白色背景。你可以通过以下链接了解更多关于腾讯云函数的信息:腾讯云函数

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

相关·内容

Swift 删除链表节点 - LeetCode

LeetCode 题目: 删除链表节点 请编写一个函数,使其可以删除某个链表给定(非末尾)节点,你将只被给定要求被删除节点。...= 4,5,1,9,它可以表示为: 4 -> 5 -> 1 -> 9 示例1: 输入: head = [4,5,1,9], node = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 第二个节点...,那么调用了你函数之后,该链表应变为 4 -> 1 -> 9....示例2: 输入: head = [4,5,1,9], node = 1 输出: [4,5,9] 解释: 给定你链表中值为 1 第三个节点,那么调用了你函数之后,该链表应变为 4 -> 5 -> 9...链表中所有节点值都是唯一。 给定节点为非末尾节点并且一定是链表一个有效节点。 不要从你函数返回任何结果。

1.3K40

Swift专题讲解十六——ARCSwift应用

Swift专题讲解十六——ARCSwift应用 一、引言         ARC(自动引用计数)是Objective-C和Swift中用于解决内存管理问题方案。...在学习Objective-C编程时经常会学习到一个关于ARC例子:一个公用图书馆,每次进入一人就将卡插入,走时候将自己的卡拔出拿走。...Swift也采用同样方式进行内存管理。         注意:Swift只有引用类型有自动引用计数,结构体、枚举这类值类型是没有引用计数。...cls 若引用实例被释放后,其另一个实例引用也将被置为nil,所以weak只能用于optional类型属性,然而在开发还有一种情况,某个类必须保有另一个类示例,这个实例不能为nil,但是这个属性又不能影响其原始实例释放...= MyClassEight() obj7=nil 除了两个类实例间会产生循环引用,闭包,也可能出现循环引用,当某个类包含一个闭包属性,同时这个闭包属性又使用了类实例,则会产生循环引用,示例如下

1.3K20

【iOS开发】生成高斯模糊效果背景

做开发时,总是使用系统默认白色背景会显得有些生硬,所以当我们以展示图片为目的时,不妨将图片放大、再做高斯模糊处理以作为背景。 我把这个处理过程用 Swift 封装成了一个函数,供大家参考。...//创建高斯模糊效果背景 func createBlurBackground (image:UIImage,view:UIView,blurRadius:Float) { //处理原始NSData...blurImageView.image = blurImage self.view.insertSubview(blurImageView, belowSubview: view) //保证模糊背景原图片...View下层 } 三个参数分别为:image(原始清晰图片)、view(你需要将生成模糊背景插入在这个view下层当做背景)、blurRadius(高斯模糊处理模糊半径) 其中 let context...= CIContext(options: nil) 这一句,真机测试时,会引起控制台报错 ?

2.2K20

Swift创建可缩放图像视图

本教程,我们将建立一个可缩放、可平移图像视图来实现这一功能。 计划 他们说,一张图片胜过千言万语--但它不一定要花上一千行代码!对于我们可缩放图像视图,我们要做是让它成为一个可缩放视图。...medium.com/media/afad3… commonInit(),我们将图像视图居中,并设置它高度和宽度,而不是把它固定在父视图上。这样一来,滚动视图就会从图像视图中获得其内容大小。...设置滚动视图 我们需要实际设置我们滚动视图,使其可缩放和可平移。这包括设置最小和最大缩放级别,以及指定用户放大时使用UIView(我们例子,它将是图像视图)。...我们将通过我们添加imageName字符串,并在字符串改变时更新UIImageView来实现。...让我们给我们类添加另一个初始化器,这样我们就可以代码设置图像名称。 medium.com/media/074d4… 就这样了!现在我们可以像这样通过图片名称以编程方式初始化我们视图了。

5.5K20

Swift图表中使用Foundation库测量类型

Swift 图表中使用Foundation 库测量类型 在这篇文章,我们将建立一个条形图,比较基督城地区自然散步持续时间。...用Plottable一致性来扩展Measurement是可行,但根据Swift关于外部类型追溯一致性警告(Warning for Retroactive Conformances...of External Types),如果Swift Charts未来添加了这种一致性,它可能会被破坏。...AxisValueLabel初始化器接受一个LocalizedStringKey,它可以通过插值测量和指定其格式风格来构建。...我们收到值是使用我们Plottable一致性定义初始化器创建,所以我们案例,测量值是以分钟为单位提供。但我相信对于这个特定图表,使用小时会更好。

2.6K20

字符串删除特定字符

题目:输入两个字符串,从第一字符串删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后第一个字符串变成”Thy r stdnts.”。...首先我们考虑如何在字符串删除一个字符。由于字符串内存分配方式是连续分配。我们从字符串当中删除一个字符,需要把后面所有的字符往前移动一个字节位置。...具体实现,我们可以定义两个指针(pFast和pSlow),初始时候都指向第一字符起始位置。当pFast指向字符是需要删除字符,则pFast直接跳过,指向下一个字符。...这样,前面被pFast跳过字符相当于被删除了。用这种方法,整个删除O(n)时间内就可以完成。 接下来我们考虑如何在一个字符串查找一个字符。当然,最简单办法就是从头到尾扫描整个字符串。...这个时候,要查找一个字符就变得很快了:根据这个字符ASCII码,在数组对应下标找到该元素,如果为0,表示字符串没有该字符,否则字符串包含该字符。此时,查找一个字符时间复杂度是O(1)。

8.8K90

Embedding 背景 发展 生成方法 推荐应用

Embedding背景与简介 提到Embedding时,首先想到是“向量化”,主要作用是将高维稀疏向量转化为稠密向量,从而方便下游模型处理。那什么是embedding呢?...经过embedding后,和词向量特性一样,越相似,其embedding距离越短。推荐系统与受众定位系统,对用户进行embedding是重中之重。物品推荐,可以把物品embedding化。...以window size为10为例子,我们删除’the’: 当我们训练其余单词时候,’the’不会出现在他们上下文中。 当中心词为’the’时,训练样本数量少于10。...典型方法有elmo、gpt、bert。其中bert特别出色许多nlp任务取得优秀效果,对bert借用、改进,衍生出各种各样方法。但是bert参数多,模型大,轻量级业务可能有些过重。...工程实践上其优越性也得到了证明(BERT 多个 NLP 任务也表现优异)。

3K62

Swift| 基础语法(五)

前言 总结下 swift基础语法,里面涉及到:常量&变量、Swift数据类型、逻辑分支、循环、字符串相关、数组和字典、方法书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift...} Swift,创建tableViewCell方法可以分为两种创建tableView时候注册和需要使用时手动创建。先聊聊创建tableView时候直接注册cell: myTb?....可以自定义cell处理点击状态下显示 var label1 :UILabel? var label2 :UILabel?...// tabbarController.tabBar.backgroundImage = UIImage(named: "") // // 4 选中时背景图片 //...因为Swift,所有对象构造器默认都是public,所以需要重写你init让其成为私有的。 这样就保证像如下代码编译报错,不能通过。 六、从相册选择照片或者拍照 ?

2K30

【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )

设置进度条完成图片; -- 注意 : 该属性 Interface Builder 没有体现出来; (6) trackImage 属性 trackImage 属性 : 设置进度条轨道图片; -- 注意...; -- 缩放主体 : 图片缩放只 UIEdgeInsets 定义 四个属性值 区域缩放, 图片中心部分是不进行缩放; 3....白色 风格; -- White : 白色风格; -- Gray : 灰色风格; (2) Color 属性 Color 属性 :  -- 作用 : 设置进度条颜色, 设置该属性会覆盖之前选中风格颜色...按钮 UIActionSheet 固定按钮 :  -- 取消按钮 : 灰色背景, 主要用于取消该 UIActionSheet 控件显示; -- 销毁按钮 : 红色背景, 用于删除某记录时, 使用该按钮确认销毁...: 透明黑色背景上显示白色文字; -- UIActionSheetBlackOpaque : 纯黑背景上显示白色文字; 2.

2.4K40

“使用多target来构建大量相似App”,唐巧大神理论验证(附工程代码地址)

“我们每个课程资源文件都具有相同文件名,例如首页背景都叫 HomeBackgroundBg.png ,由于每个课程背景不一样,所以我们工程,每一个课程 target 下,通过修改Copy Bundle...这样好处是,代码逻辑层面,我们可以完全不用处理课程间资源文件差异性问题。资源文件差异性都是通过配置文件来保证。”...克隆target方法和相关知识请看“http://www.jianshu.com/p/83b6e781eb51” 注意:不同target只能引用对应目录下文件,如果build Phases引用多了...,选中后点-号删除多余引用,否则编译无法通过。...工程使用是Xcode8.2.1,swift3.0,主要代码如下: // // ViewController.swift // MultiTargetTest // // Created by 马

47560
领券