Swift 3:获取 UIImage 中像素的颜色(更好:UIImageView)

2024-01-03

我尝试了不同的解决方案(例如this one https://stackoverflow.com/questions/25146557/how-do-i-get-the-color-of-a-pixel-in-a-uiimage-with-swift),但我得到的颜色看起来与真实图像有点不同。我想这是因为图像只是RGB, not RGBA。这可能是一个问题吗?

相关问题:如果 UIImage 有contentMode = .scaleAspectFill,我是否必须重新计算图像,或者我可以使用imageView.image?

EDIT:

我尝试使用这个扩展:

extension CALayer {
    func getPixelColor(point: CGPoint) -> CGColor {
        var pixel: [CUnsignedChar] = [0, 0, 0, 0]

        let colorSpace = CGColorSpaceCreateDeviceRGB()
        let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue)

        let context = CGContext(data: &pixel, width: 1, height: 1, bitsPerComponent: 8, bytesPerRow: 4, space: colorSpace, bitmapInfo: bitmapInfo.rawValue)

        context!.translateBy(x: -point.x, y: -point.y)

        self.render(in: context!)

        let red: CGFloat   = CGFloat(pixel[0]) / 255.0
        let green: CGFloat = CGFloat(pixel[1]) / 255.0
        let blue: CGFloat  = CGFloat(pixel[2]) / 255.0
        let alpha: CGFloat = CGFloat(pixel[3]) / 255.0


        let color = UIColor(red:red, green: green, blue:blue, alpha:alpha)

        return color.cgColor
    }
}

但对于某些图像来说,坐标系似乎被翻转了,对于其他图像,我得到了非常错误的值......我在这里错过了什么?

EDIT 2:

我尝试使用这些图像:

https://dl.dropboxusercontent.com/u/119600/gradient.png https://dl.dropboxusercontent.com/u/119600/gradient.png https://dl.dropboxusercontent.com/u/119600/[电子邮件受保护] https://dl.dropboxusercontent.com/u/119600/gradient@2x.png

但我确实得到了错误的价值观。它们嵌入在一个UIImageView但我转换坐标:

private func convertScreenPointToImage(point: CGPoint) -> CGPoint {
    let widthMultiplier = gradientImage.size.width / UIScreen.main.bounds.width
    let heightMultiplier = gradientImage.size.height / UIScreen.main.bounds.height

    return CGPoint(x: point.x * widthMultiplier, y: point.y * heightMultiplier)
}

This one

给我=== Optional((51, 76, 184, 255))在 iPhone 7 模拟器上运行时,这是不正确的......


我写的是这是一个游乐场。我用指针索引图像数据并获取 rgba 值:

func pixel(in image: UIImage, at point: CGPoint) -> (UInt8, UInt8, UInt8, UInt8)? {
    let width = Int(image.size.width)
    let height = Int(image.size.height)
    let x = Int(point.x)
    let y = Int(point.y)
    guard x < width && y < height else {
        return nil
    }
    guard let cfData:CFData = image.cgImage?.dataProvider?.data, let pointer = CFDataGetBytePtr(cfData) else {
        return nil
    }
    let bytesPerPixel = 4
    let offset = (x + y * width) * bytesPerPixel
    return (pointer[offset], pointer[offset + 1], pointer[offset + 2], pointer[offset + 3])
}

let image = UIImage(named: "t.png")!
if let (r,g,b,a) = pixel(in: image, at: CGPoint(x: 1, y:2)) {
    print ("Red: \(r), Green: \(g), Blue: \(b), Alpha: \(a)")
}

请注意,如果您在作为 UIImageView 属性的 UIImage 上使用它,则像素坐标是原始分辨率下的实际图像的像素坐标,而不是缩放后的 UIImageView 的屏幕坐标。它还尝试使用 RGB Jpg 和 RGBA PNG,并且两者都作为 32 位 RGBA 图像导入,因此它适用于两者。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 3:获取 UIImage 中像素的颜色(更好:UIImageView) 的相关文章

  • CKAsset 不会显示在表格视图图像中

    我在 cloudkit DB 中有一个可选图像 已检查数据库 并且在我在测试中添加它的情况下该图像就在那里 我创建了一个类 它将记录字段初始化为我在表视图中使用的变量 我也有一个定制单元 但图像不会显示在我的自定义表格视图单元格中 我不知道
  • 用于通过 Apple 登录的自定义圆形按钮

    我遵循 Apple 的指南来实施 使用 Apple 登录 按钮 苹果在文档中表示 也可以仅使用徽标来创建 使用Apple登录 的自定义按钮 您也可以更改图像的形状以具有圆形按钮 为了能够编辑图像 它还提供插入蒙版 但我不明白我们必须为按钮或
  • 如何更改 UIImage 的颜色? [复制]

    这个问题在这里已经有答案了 我不想改变图像的背景颜色 而是改变整个图像的颜色 但问题是 我只能改变backgroundColor 接受的答案是正确的 但还有更多easy way for UIImageView Obj C UIImage i
  • AFNetworking 的 setImageWithURLRequest 在滚动后在错误的单元格中设置图像(iOS、Swift)

    我使用表dequeueReusableCellWithIdentifier and afnetworking uiimageview 我的一些细胞有图像 有些则没有 如果我在加载图像之前滚动表格 成功块会将图像放入重复使用的错误单元格中 例
  • 将 UIImage 放入 UIButton 的简单方法

    我的 iPhone 应用程序中有一个 UIButton 我将其大小设置为 100x100 我有一个 400x200 的图像 我希望在按钮中显示它 按钮仍然需要保持在 100x100 并且我希望图像缩小以适应 但是 保持正确的纵横比 我想这就
  • 当将 contentMode 设置为 UIViewContentModeScaleAspectFit 时,如何设置 UIImageView 左对齐或右对齐?

    我想在使用时控制图像对齐UIViewContentModeScaleAspectFit in UIImageView 例如 我有两个UIImageView在上述的一个视图中 这两个UIImageView的内容模式是UIViewContent
  • ios:如何使用 CGPath 模糊图像?

    我创建了一个 CGPath 区域 如绿色圆圈所示 CGPath区域需要清晰 图像的其余部分将应用模糊或半透明效果 我可以使用以下代码在CGPath内剪切图像 UIGraphicsBeginImageContext view frame si
  • 如何从 UILabel 创建图像?

    我目前正在 iPhone 上开发一个简单的类似 Photoshop 的应用程序 当我想要展平图层时 标签位于良好的位置 但字体大小不佳 这是我要展平的代码 UIGraphicsBeginImageContext CGSizeMake wid
  • IOS 上图像的加密/解密

    我们正在使用加密 解密和 UIIMAGE 如果我们加密和解密 UIIMAge 而不保存到 iphone 画廊中 它工作正常 但如果我们加密 保存到画廊中 将 加密的图像 加载到应用程序中 然后解密它效果不好 我们使用这个函数来加密 解密 保
  • iPhone/Objective-C - 呈现视图和委托时的 UIDocumentInteractionController 类参考

    我在用UIDocumentInteractionController在我的应用程序中 以便在我的应用程序中呈现 Instagram 过滤器屏幕 如下所述 http instagram com developer iphone hooks h
  • 如何快速更改按钮图像?

    我正在开发一个有按钮的应用程序 该按钮没有文本 图像或背景 所以我想做的就是在viewDidLoad函数中给它一个图像 这就是我所拥有的 IBOutlet var tapButton UIButton override func viewD
  • 如何检测 UIImage 的非透明部分何时与 UIImage 的另一个非透明部分接触

    我在完成一些我认为会容易得多的事情时遇到了困难 每当 UIImage 中图片的非透明部分接触 UIImage 中包含的图像的另一个非透明部分时 我试图运行一个方法 我举了一个例子来帮助进一步解释我的问题 正如您在上图中看到的 我有两个三角形
  • 将 GestureRecogniser 附加到多个图像视图

    今天我在将相同的手势识别器附加到多个图像视图时遇到了一些奇怪的事情 它仅附加到最后一个视图 换句话说 它只能附加到一个视图 我必须创建多个手势识别器才能满足我的要求 以下是我所做的 我做的对吗 这是将识别器附加到多个图像视图的唯一方法吗 请
  • 如何获取 UIImage 的大小(以 KB 为单位)?

    有没有办法从 UIImage 获取以 KB 为单位的文件大小 而不从 didFinishPickingMediaWithInfo 获取该图像 所呈现的图像来自相册 我尝试了以下代码 但这给出了以下结果 图像大小 KB 0 000000 vo
  • iPhone/Xcode:UIImage 和 UIImageView 无法使用该程序

    从 iPhone 照片库中选取图像后 我尝试在 iPhone 文档目录中保存和加载 UIImage 它可以这样做 但由于某种原因 当我加载图像时 它会逆时针旋转 90 度 这是我的 saveImage 和 loadImage 方法 保存图片
  • 有人想要一个大的、绿色的 UIImage 吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 根据这个帖子 https stackoverflow com questions 1427818 iph
  • 调整图像大小 Objective-C [重复]

    这个问题在这里已经有答案了 我正在尝试缩小使用 iPhone 4 及更高版本拍摄的 Objective C 图像的尺寸 以便我可以尽快将其发送到服务器 目前 全尺寸图像需要很长时间才能完成 目前我正在尝试的缩小规模是 CGSize imag
  • 截取 UIImageView 的屏幕截图我只需要图像 IOS

    在我的 IOS 应用程序中 我正在截取 UIImageView 的屏幕截图 如附件照片所示 非常完美 但在这里 我采取了UIImageView content mode 方面适合 我用过这个代码 func captureView gt UI
  • 如何在 MPMoviePlayerController 上添加 UIImageView | iOS |目标C

    我有一个控制器 可以使用 MPMoviePlayerController 显示视频 我需要在视频上放置图像 我正在尝试使用以下代码 但它没有显示 我缺少什么 method to play the video void playVideoIn
  • 在 iPhone 上使用 Xcode Auto Layout 处理不同的图像尺寸

    通过纵向 iPhone 的自动布局 我不希望 iPhone 6 上的游戏角色的 UIImageView 尺寸与 iPhone 4S 中的完全相同 4S 的角色需要更小一些 否则看起来会太大 使用自动布局如何更改 iPhone 之间的图像尺寸

随机推荐

  • 在 Eclipse Indigo 中运行 MPJ Express 时出现“未解决的编译问题”

    我遵循了 Youtube 上关于如何在 IDE 中使用 MPJ Express 运行并行应用程序的教程 我下载了最新版本的 MPJ Express 并使用了 Eclipse Indigo 我确实在我的项目 JAR 文件中包含了 MPI 当我
  • FXML 文档的 Netbeans 8.2 自动完成始终显示“无建议”

    我第一次在 Netbeans 8 2 中创建 JavaFX 项目 FXML 文档的自动完成功能始终显示 无建议 例如 我见过类似的问题 例如Netbeans7 1 和 JavaFX 2 0 FXML 代码完成不起作用 https stack
  • Gradle 6.0 打破了源集依赖

    我在这里为学生收集了一些课程 https github com emign engineEmi Lektionen tree master https github com emign engineEmi Lektionen tree ma
  • 在左下角/右下角创建两个按钮

    JButton button1 new JButton Button 1 JButton button2 new JButton Button 2 JFrame frame new JFrame frame getContentPane s
  • 引用 github 存储库中的 .css 文件作为 .html 文件中的样式表

    我在 github 上有一个存储库 其中有一个 css 文件 有什么方法可以让 github 以我可以在网页中使用它的方式提供该文件吗 换句话说 我希望能够从本地计算机或实时域上的 HTML 文件直接引用 github 上的此源文件 就像是
  • Java 中的贪吃蛇游戏,但我的重启按钮不起作用

    我的游戏重启按钮不起作用 点击它时它会倍增 我不太了解 Java 我认为自己很好 游戏主要内容 package snake game public class snake public static void main String arg
  • 选择各种嵌套容器中的最后一个元素

    如何选择 CSS 中最后一个也是最深的元素 有没有办法改进这个CSS代码 对于深树 您提出什么解决方案 15 25 我避免使用 JavaScript 但 SASS 解决方案是受欢迎的 也许使用 for level 1 div case gt
  • Dispatcher.BeginInvoke 问题

    我收到此代码的 非静态字段 方法或属性 System Windows Threading Dispatcher BeginInvoke System Action 需要对象引用 private void ResponseCompleted
  • 使用 AutoCloseable 关闭多个资源(try-with-resources)

    我知道 如果资源实现了 AutoCloseable 则您尝试传递的资源将自动关闭 到目前为止 一切都很好 但是 当我有多个想要自动关闭的资源时 我该怎么办 套接字示例 try Socket socket new Socket input n
  • 命名空间对性能有害吗? (PHP)

    我对 php 框架进行了一些更改以支持名称空间 但结果并不符合预期 对于简单的测试 主要加载框架类 执行时间减慢了约 10 根据您的经验 在大型应用程序上使用命名空间是否值得 考虑PHP的实际开发水平 已接受的答案php 命名空间基准测试
  • AWS将elb的8000端口转发到EC2的8000端口

    我有一个 ELB 其中在目标组中注册了多个 EC2 实例 我正在使用一个运行正常的 php 应用程序端口 它有 SSL 我想将端口 8000 用于我的节点应用程序 我想做的是将 my elb address 8000 转发到 any ec2
  • 根据元组的值对Python中的元组进行排序[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下代码打印最常见的 10 个单词 但是 它不起作用 关于如何修复它有什么想法吗 def reducer count words self word counts send all num occu
  • 关于搜索引擎抓取我应该了解什么?

    我指的不是 SEO 的事情 我应该知道什么 例如 引擎运行 JavaScript 吗 他们使用cookies吗 cookie 是否会跨爬行会话进行 例如今天的 cookie 和下周或下个月的爬行 选定的 JS 过滤器是否因某种原因未加载 例
  • 请解释一下该程序中的逗号运算符

    请解释一下该程序的输出 int main int a b c d a 10 b 20 c a b d a b printf nC d c printf nD d d 我得到的输出是 C 10 D 20 我的疑问是 运算符在这里做什么 我使用
  • B 树与二叉树

    如果我使用 b 树实现内存 RAM 搜索操作 那么与二叉树相比 它在缓存或其他一些效果方面会更好吗 我所知道的是 binary search tress O log n btrees O c log n 各种博客上对此进行了很多讨论 Alg
  • Fluent Nhibernate - 选择特定列并使用分组进行计数查询

    我在流畅的 nhibernate 中执行查询时遇到一些问题 我有一个表 书籍 包含以下列 ID NAME YEAR BOOK TYPE AUTHOR ID 我想在 Fluent NHibernate 中执行以下 sql 查询 SELECT
  • 如何在 Android 手机图库中实用地获取图像的所有详细信息

    我正在尝试获取手机图库中图像可用的所有详细信息 特别是位置 当用户单击详细信息时 这些信息将会出现 所以请告诉我该怎么做 请参阅屏幕截图以更好地理解 提前致谢 你应该去Exif接口 http developer android com re
  • 使用逻辑运算符索引 numpy 数组

    我有一个 2d numpy 数组 例如 import numpy as np a1 np zeros 500 2 a1 0 np arange 0 500 a1 1 np arange 0 5 1000 2 could be also re
  • 将我的网站与 Google 日历集成

    我正在用 PHP 开发一个网站 该网站的用户可以从我提供的日历中进行预约 当用户进行预订时 应将其添加到我的谷歌日历中 对于这种情况 我需要什么样的身份验证机制 以下哪一项 1 网络应用程序 2 服务账户 3 安装的应用程序 注意 我不想访
  • Swift 3:获取 UIImage 中像素的颜色(更好:UIImageView)

    我尝试了不同的解决方案 例如this one https stackoverflow com questions 25146557 how do i get the color of a pixel in a uiimage with sw