在 Objective C 中检测 PNG 文件是否损坏

2023-11-30

我正在使用 NSURLRequest 下载 jpg 和 png。这工作正常,但有时文件会损坏。 我见过捕获错误:损坏的 JPEG 数据:数据段过早结束并使其适用于 jpg。 有谁知道对 png 做同样的事情的方法吗?即以编程方式检查 png 数据是否有效...


PNG 格式有几个内置检查。每个“块”都有 CRC32 检查,但要检查您需要读取完整文件。

更基本的检查(当然不是万无一失的)是读取文件的开头和结尾。

前 8 个字节应始终是以下(十进制)值{ 137, 80, 78, 71, 13, 10, 26, 10 } (ref)。特别地,第二到第四字节对应于ASCII字符串“PNG”。

以十六进制表示:

89 50 4e 47 0d 0a 1a 0a
.. P  N  G  ...........

您还可以检查文件的最后 12 个字节(IEND 块)。中间 4 个字节应对应于 ASCII 字符串“IEND”。更具体地说,最后 12 个字节应该是(十六进制):

00 00 00 00 49 45 4e 44 ae 42 60 82
........... I  E  N  D  ...........

(严格来说,PNG 文件并不一定要以这 12 个字节结尾,IEND 块本身就表示 PNG 流的结束,因此文件原则上可以有额外的尾随字节,这些字节会被 PNG 阅读器忽略。实际上,这是极不可能的)。

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

在 Objective C 中检测 PNG 文件是否损坏 的相关文章

  • UIAlertController 在 iOS 9 中不工作

    I have added the UIAlertController code showing login and password textfields it works for iOS 8 but in iOS 9 not works
  • UITextField 文本更改事件

    如何检测文本字段中的任何文本更改 委托方法shouldChangeCharactersInRange适用于某些东西 但它并不能完全满足我的需求 因为在它返回 YES 之前 textField 文本不可用于其他观察者方法 例如在我的代码中ca
  • iOS:调用 Objective-C 方法的处理开销是多少?

    我正在编写一些实时音频处理代码 该代码将在音频单元的渲染回调中执行 该线程处于系统识别的最高优先级 Apple 指示最大限度地减少此调用中进行的处理量 他们的建议之一是避免 Objective C 方法调用 But why 调用 Objec
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • 如何在iPhone应用程序中的类结构中实现主键和外键表数据[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何连接sqlite数据库中的两个表数据 if sqlite3 open dbPath UTF8String database SQL
  • UISegmentedControl 中的自定义字体禁用调整FontSizeToFitWidth

    我已经为我的 UISegmentedControl 设置了自定义字体 但它似乎禁用了默认字体自动调整字体大小以适合宽度范围 Before After 这是我用来设置自定义字体的代码 UISegmentedControl segmentedC
  • 创建类似于邮件应用程序菜单的 iPhone 弹出菜单

    当您想要回复消息时 我想创建一个类似于邮件应用程序中的弹出菜单 我在多个应用程序中看到过这一点 所以我不确定框架中是否内置了某些内容或一些示例代码 在 Swift 中创建操作表 代码已使用 Swift 5 进行测试 从 iOS 8 开始 U
  • 当我从我转向的视图控制器返回时,为什么我的 UITableView 的格式完全出错了?

    我有一个UITableView使用自定义单元格 其中有一些标签可以动态决定单元格的高度 当我点击一个单元格并转到一个新的视图控制器时 返回后所有单元格的格式完全混乱 我无法弄清楚是什么导致了它 这是细胞通常的样子 我对它们设置了一些非常基本
  • 在 uilabel 中查找文本的位置 {x,y}

    我有一个来自服务器的字符串 我正在 UILabel multiligne 上显示它 在该字符串中 我正在识别一些特定的子字符串 我想在该子字符串上放置一个按钮 按钮将是 UILabel 的子视图 为此 我需要子字符串坐标 我经历过这个 但我
  • iPad 照片选择器崩溃

    我正在使用以下函数根据 UIActionSheet 的结果激活设备相机或图像选择器 如果 fromCamera YES 那么它适用于 iPhone 和 iPad 如果 fromCamera NO 那么它可以在 iPhone 上运行并出现图像
  • 如何在网站上使用 svg 元素制作块的屏幕截图?

    我在网站上创建了一个构造函数 其本质是将所选元素及其颜色 svg中的元素 添加到访问者选择的背景和背景颜色 png中的背景 中 然后必须单击 保存 结果 按钮并仅执行工作区的屏幕截图 我写了这个脚本 但它需要屏幕截图 但只有背景 并忽略选定
  • 如何将 UILabel 的值绑定到实例变量?

    我是 mac objective c 的新手 我的问题是 我想知道是否可以将 UILabel 文本绑定到变量 而不必在值更改时手动设置文本 例如 在 Mac OS 上 当我打开新的 Finder 窗口并删除文件时 任务栏中的全局可用空间就会
  • Objective-C – 拥有包含 TestFlight SDK 的 TestFlight 配置

    我已按照 TestFlight 的说明复制 发布 配置 我还使用 TestFlight SDK 从我的应用程序获取实时报告 通过这样做 我必须在我的应用程序中包含一些 TestFlight 代码 当然 我不想在我的应用程序的发布版本中包含此
  • insertNewObjectForEntityForName:

    我使用 Xcode xcdatamodel 文件编辑器设置了一个实体 我创建了一个名为 Person 的实体 添加了一些属性 然后生成了一个 m 文件来表示它 一切都很好 现在 当我去编写一行代码时 例如 Person person Per
  • 如何将 ios7 通用应用程序升级到基于 Xcode 6 的通用故事板应用程序?

    我目前有一个基于 xcode 5 ios 7 的通用应用程序 因此有两个故事板 我正在考虑将其更新到 ios 8 有没有办法 最佳方法将两个故事板迁移到通用的单个故事板 我在 xcode 6 中看不到转换选项 None
  • 如何判断 NSObject 是否具有某个属性?

    假设在 Apple API 1 0 版中 有一个 NSFoo 类 其属性为 color API 1 1 添加了属性 size 我想知道是否可以使用 getter myFoo size myFoo respondsToSelector sel
  • 使用 UITabBarController 时覆盖整个屏幕的视图?

    我想在 UITabBarController 设置中在整个屏幕上覆盖 HUD 样式的透明图形 执行此操作的按钮位于第一个选项卡的屏幕 FirstViewController 中 并且覆盖层也应该覆盖选项卡 这可能吗 您可以将新视图直接附加到
  • iOS7 由 Interface Builder 生成的 NSIBPrototypingLayoutConstraint 自动布局约束问题

    以前在 iOS6 中 我的聊天消息视图控制器使用 IB 中精心构建的自动布局约束正确显示和动画 下面是 Xcode 5 中删除了约束的当前视图层次结构 升级到 XCode 5 和 iOS7 后 我发现我需要清除所有旧的约束才能解决默认的半透
  • 在 HTML5 画布中,如何用我选择的背景遮盖图像?

    我试图用画布来实现这一点 globalCompositeOperation 但没有运气 所以我在这里问 这里有类似的问题 但我没有在其中找到我的案例 我的画布区域中有图层 从下到上的绘制顺序 画布底座填充纯白色 fff 用fillRect
  • Glib 在 iPhone 应用程序中的使用

    我想基于现有的开源 Objective C 框架开发一个 iPhone 应用程序 但是该框架广泛使用了 glib 库 我找不到一种方法来构建和包含 iPhone 应用程序的 glib 库 非越狱 有什么办法可以做到这一点 或者有没有推荐的方

随机推荐

  • NPM 获取失败

    这是一个快速的 npm install socket io npm http GET https registry npmjs org socket io npm http 304 https registry npmjs org sock
  • ES6 模块:导入后未定义 onclick 函数

    我正在测试 ES6 模块并希望让用户使用以下命令访问一些导入的函数onclick 测试 html
  • 在 C# 中拖放矩形

    我想知道如何在 C 中绘制矩形 并将其拖放到页面中 我的代码用于绘制它 但我无法拖放它 public partial class Form1 Form public bool drag false int cur x cur y Recta
  • 如何在 Pygame 中对对象或精灵的位置进行动画处理,并将其移向预定义的位置或沿着定义的路径移动?

    我学会了如何在pygame中打印图像 但我不知道如何制作动态位置 它可以自行改变图像位置 我错过了什么 这是我的尝试 import pygame screen size 360 600 screen pygame display set m
  • 从字符串到 MongoDB ObjectID 的转换

    我尝试将字符串 ID 转换为 MongoDB ObjectID public class relevancy test extends Object implements Comparable
  • 在 Android 应用程序中使用 startActivityForResult

    我写了一个应用程序 其中有一个
  • 尝试使用 JSON.Net 使用 SmartyStreets JSON...“无法将 JSON 数组反序列化为组件类型”

    我正在尝试使用 SmartyStreets JSON LiveAddress API 但遇到了一些困难 我承认我对 JSON 不太熟悉 无论如何 我尝试了几种不同的方法 但通常会出现错误 无法将 JSON 数组反序列化为元数据类型 这是 J
  • AJAX 表单提交后重定向

    使用 MVC 4 我有一个部分视图表单 其中包含 Ajax BeginForm 表单按预期提交 结果异步显示在我的主视图中 我想要我的控制器上有一个条件 如果我的表单上的某个参数为真 那么它会重定向到一个全新的页面 而不是在我的主视图中显示
  • 使用 R 下载并读取压缩的 xml 文件

    基于thisDirk Eddelbuettel 的回答 我正在尝试阅读xml文件来自zip存档以供进一步处理 除了 URL 和文件名之外 对引用的代码的唯一更改是我更改了read table to xmlInternalTreeParse
  • 检测输入数字中向上/向下按钮的不同事件

    有没有办法区分输入类型数字的事件向上 向下按钮 我读到有一个change事件 但我想知道我是否可以识别按下向上 向下按钮时的不同事件 我会更清楚
  • SQL Server 中的服务器端分页

    我对 SQL Server 如何使用公用表表达式和 ROW NUMBER 实现更少的读取和性能改进感到有点困惑 为什么表达式中实现的表不必执行普通查询必须执行的所有读取操作 以允许查询使用 ROW NUMBER 进行排序 The CTE不是
  • UiView 内的 IOS swift avplayer 我怎样才能让它工作

    我刚开始使用 AVPlayer for IOS swift 并让它正常工作 不过 我希望视频现在可以在 UIView 内播放 默认情况下视频会占据整个页面 我一直在尝试一些事情 但我的代码没有任何作用 我在该页面上还有其他内容 这就是为什么
  • Android 在WebView中调用JavaScript函数

    我试图调用一些位于 android webview 内运行的 html 页面中的 javascript 函数 下面的代码尝试执行的操作非常简单 从 android 应用程序中 使用测试消息调用 javascript 函数 该函数又调用 an
  • 倒计时至特定日期

    我想做的事情看起来应该很简单 但事实证明很棘手 我需要一个倒计时脚本 它使用目标日期并为我提供三个单独的数字 即距该日期的天数 小时数和分钟数 然后我可以将其插入页面的适当位置 我尝试了 jCountdown 但虽然它是高度可定制的 但我仍
  • php 解析字符串并替换子字符串

    我有一个 PHP 字符串 该字符串出现了该模式 abc some substring xyz 此类子字符串在主字符串中多次出现 每个出现的地方都需要替换为数组中的字符串array substring1 substring2 substrin
  • ASP MVC 将值传递到模态窗口

    我有一个带有模态窗口的视图 当我点击打开模态窗口时 我想传递参数item InstrumentId进入模式窗口 以便我可以单击一个链接 将我重定向到属于 InstrumentId 的特定仪器的页面 我在下面所做的成功地将 Instrumen
  • 按日期对多列重新排序和重新分组

    我对此有点困惑 希望得到一些帮助 这是我的数据 Col A Col B Col C Col D Col E Col F FRANCE ITALY DATE Installs Uninstalls DATE Installs Uninstal
  • 在 C++ 中设置单独的位[重复]

    这个问题在这里已经有答案了 我有一个 5 字节数据元素 我需要一些帮助来弄清楚如何在 C 中设置这些字节之一的单个位 请参阅下面我的示例代码 char m TxBuf 4 我想将位 2 设置为字节的高位m TxBuf 1 00000 0 0
  • Android 中通过触摸事件进行反向地理编码

    我通过此堆栈溢出浏览了几篇文章以及其他与反向地理编码相关的文章 我打算从触摸事件中查找具有给定纬度和经度的地点的名称 我从触摸事件中获取了纬度和经度 但无法从该地理坐标中获取地址 它传递异常而不是在尝试区域中 这是代码 public boo
  • 在 Objective C 中检测 PNG 文件是否损坏

    我正在使用 NSURLRequest 下载 jpg 和 png 这工作正常 但有时文件会损坏 我见过捕获错误 损坏的 JPEG 数据 数据段过早结束并使其适用于 jpg 有谁知道对 png 做同样的事情的方法吗 即以编程方式检查 png 数