在 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 文件是否损坏 的相关文章

  • NSMenuItem、自定义视图和 mouseUp 的奇怪问题:

    我在这里遇到了一个非常非常奇怪的 NSMenu 问题 我使用的大约一半的 NSMenuItems 通过 NSMenuItem 上的 setView 方法具有自定义视图 在此自定义视图中 我实现了 mouseUp 来捕获用户单击菜单项的时间
  • 检测 UITableView 中的水平平移

    我正在使用 UIPanGestureRecognizer 来识别 UITableView 中的水平滑动 准确地说是在单元格上 尽管它已添加到表格本身 然而 这个手势识别器显然窃取了桌子上的触摸 我已经让 pangesturerecogniz
  • 以编程方式更改 UISlider 的范围

    如何以编程方式设置 UISlider 的最小最大范围 例如 虚拟代码 UISlider slider UISlider alloc init slider min 3 slider max 3 EDIT 所以我有以下内容 sl minimu
  • 监控剪贴板活动可可?

    是否可以在可可中 观看 用户剪贴板 例如 如果我的应用程序是系统托盘样式应用程序 例如 dropbox 客户端 我可以订阅用户在另一个应用程序中点击复制 粘贴时引发的事件吗 你可以随时查看Apple的示例代码 剪贴板查看器 http dev
  • iPhone 上的锁定方向 UIWebView

    有没有办法锁定 UIWebView 的方向 使用 Obj C JS 还是 Html 我不想有按钮或任何东西 我只想在应用程序打开时将其锁定为纵向 好像这个堆栈溢出帖子 https stackoverflow com questions 43
  • 将子视图发送到后面

    我正在尝试模仿 facebook ios 侧面菜单并让它工作 但是我遇到的问题是我无法将侧面菜单发送到后面 正如另一个问题中所讨论的那样使用 Objective C 的 iphone facebook 侧边菜单 https stackove
  • 在 iPhone 模拟器中从硬盘读取文件

    是否可以将文件 从我的普通文件系统 读入在 iPhone 模拟器上运行的 iPhone 应用程序 据我所知 iPhone 本身没有 用户可访问的 文件系统 但这只是为了测试 并且只能在模拟器中运行 该文件将是一个可以在应用程序运行时编辑的文
  • NSUserDefaults、Settings.bundle 和应用程序组

    我有一个有 2 个目标的应用程序 主应用程序和 Today 扩展 为了在这些目标之间共享设置 我打开了应用程序组功能 添加了一个组group myApp com然后使用NSUserDefaults在主应用程序和今日扩展中都是如此 var d
  • Draggable UIView 在添加到 UIScrollView 后停止发布 TouchBegan

    在 Xcode 5 1 中我创建了一个简单的测试应用程序 https github com afarber ios newbie tree master ScrollContent对于 iPhone 结构是 scrollView gt co
  • 有没有办法更改 UITabBar 或 UITabBarItem 中的文本位置?

    这是我打算放在屏幕上的自定义选项卡栏 然而 我的搭档希望文字稍微向上一些 我怎样才能这样做呢 为什么不为视图控制器设置一个空的标题属性 并将标题添加到选项卡的自定义图像中 UPDATE 为了回答的完整性 来自评论和ios标签栏在没有图像时将
  • 将 UIDatePicker 装入 UIActionSheet 中

    我正在尝试让带有 UIButton 的 UIDatePicker 显示在 UIActionSheet 中 不幸的是 它被剪掉了 整个日期选择器都不可见 我什至还没有尝试添加 UIButton 谁能建议让整个视图正确配合 我不确定如何添加正确
  • 如何从一个 ViewController 到另一个 ViewController 访问对象

    提供一些技巧来摆脱以下情况 描述 我有两个 viewController 即视图控制器1 and 视图控制器2 所以显然我们有ViewController1 h ViewController1 m and ViewController2 h
  • 是否可以使用 UITableViewStylePlain 禁用 UITableView 中的浮动标题?

    我正在使用一个UITableView布局内容 页面 我使用表视图的标题来布局某些图像等 如果它们不浮动而是保持静态 就像样式设置为时那样 我更喜欢它UITableViewStyleGrouped 其他则使用UITableViewStyleG
  • Objective C“#if”语法

    我对 如果 或 如果 有点困惑 if当我查看一些类时我看到的语法 例如 if someConstant someNumber do something elif etc versus if someConstant someNumber d
  • 使用 inkscape 命令行将 svg 转换为 png 失败

    我觉得我一定做了一些愚蠢的错误 但我就是无法让它发挥作用 这是我从 cmd 运行的命令 inkscape com C path ship svg e export png C Path ship png without gui 作为回报 我
  • 如何在iPhone应用程序中创建折线图? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我们可以在 Objective-C 中创建可空/非空属性吗?

    我们可以在 Objective C 中创建可空 非空属性吗 如果可以 那么如何创建 您可以使用 Nullable and Nonnull预选赛 property copy nullable NSString name property co
  • 模拟 Push Segue 的自定义 Segue 将 VC 变成僵尸

    使事情简短明了 我写了一个自定义的segue void perform UIView preV UIViewController self sourceViewController view UIView newV UIViewContro
  • MFC CImage alpha 混合出错

    我必须在图片控件上呈现由两个 PNG 文件组成的图像 其中顶部图像在某些位置具有透明像素 结果应该是plotter png 与 bar png 顶部重叠显示为 注意条上奇怪的白色轮廓 但应该是 我为它编写的代码很简单 CImage imag
  • iOS 版 Google Analytics 中的线程崩溃

    使用适用于 iOS 版本 3 0 9 以及一般的 3 0 x 的 Google Analytics 库 我们看到很多像下面这样的崩溃 它们似乎是随机发生的 Exception Type SIGBUS Exception Codes BUS

随机推荐

  • 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 数