从 CGImageRef 创建的 UIImage 失败并显示 UIImagePNGRepresentation

2023-11-26

我使用以下代码从较大的 UIImage 中裁剪并创建一个新的 UIImage。我已将问题与函数 CGImageCreateWithImageInRect() 隔离开来,该函数似乎没有按照我想要的方式设置某些 CGImage 属性。 :-) 问题是调用函数 UIImagePNGRepresentation() 失败,返回 nil。

CGImageRef origRef = [stillView.image CGImage];
CGImageRef cgCrop = CGImageCreateWithImageInRect( origRef, theRect);
UIImage *imgCrop = [UIImage imageWithCGImage:cgCrop];

...

NSData *data = UIImagePNGRepresentation ( imgCrop);

-- libpng 错误:没有 IDAT 写入文件

知道从 UIImage 中裁剪出矩形可能会出现什么问题或替代方案吗?


我遇到了同样的问题,但只是在 iOS 3.2 上测试兼容性时。在 4.2 上它工作正常。

最后我发现了这个http://www.hive05.com/2008/11/crop-an-image-using-the-iphone-sdk/这对两者都有效,尽管有点冗长!

我将其转换为 UIImage 上的类别:

UIImage+Crop.h

@interface UIImage (Crop)
- (UIImage*) imageByCroppingToRect:(CGRect)rect;
@end

UIImage+Crop.m

@implementation UIImage (Crop)

- (UIImage*) imageByCroppingToRect:(CGRect)rect
{
    //create a context to do our clipping in
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef currentContext = UIGraphicsGetCurrentContext();

    //create a rect with the size we want to crop the image to
    //the X and Y here are zero so we start at the beginning of our
    //newly created context
    CGRect clippedRect = CGRectMake(0, 0, rect.size.width, rect.size.height);
    CGContextClipToRect( currentContext, clippedRect);

    //create a rect equivalent to the full size of the image
    //offset the rect by the X and Y we want to start the crop
    //from in order to cut off anything before them
    CGRect drawRect = CGRectMake(rect.origin.x * -1,
                                 rect.origin.y * -1,
                                 self.size.width,
                                 self.size.height);

    //draw the image to our clipped context using our offset rect
    CGContextTranslateCTM(currentContext, 0.0, rect.size.height);
    CGContextScaleCTM(currentContext, 1.0, -1.0);
    CGContextDrawImage(currentContext, drawRect, self.CGImage);

    //pull the image from our cropped context
    UIImage *cropped = UIGraphicsGetImageFromCurrentImageContext();

    //pop the context to get back to the default
    UIGraphicsEndImageContext();

    //Note: this is autoreleased
    return cropped;
}


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

从 CGImageRef 创建的 UIImage 失败并显示 UIImagePNGRepresentation 的相关文章

  • 调用当前的 Modal ViewController 两次?

    我遇到了 UIViewController presentModalViewController 被调用两次的问题 我有一个模态视图 我试图调出另一个模态视图 但第二次没有任何反应 我怀疑它被隐藏了 还有其他人这样做过吗 您不能在同一个父控
  • 自定义 UINavigationController UINavigationBar

    基本上我想要一个定制UINavigationBar 我不希望它是 半透明 或任何东西 就像图片应用程序一样 我基本上想完全删除它 但我仍然希望能够在按下导航控制器时添加后退按钮等 并且我想要视图 例如 UITableViewControll
  • 使用标识符启动 iPhone 应用程序

    我正在尝试在我的应用程序中启动应用程序 例如 如果我按下 testApp1 中的按钮 它应该打开 testApp2 有没有办法用应用程序标识符来做到这一点 我听说过一种名为的未记录方法launchApplicationWithIdentif
  • 如何在 iPhone 中使用 XMPPFramework 创建 MultiUserChatRoom

    我正在 iPhone 中使用 XMPPFramwwork 开发聊天应用程序 我成功完成了一对一聊天 现在我想在我的应用程序中开发多用户聊天 我尝试了以下代码 但未调用 XMPPRoomDelegate 的任何委托方法 我如何开始创建聊天室
  • 增加 iPhone 的推送通知徽章

    是否可以在收到通知时增加徽章值 或者我应该将计数作为有效负载发送吗 如果我每次都将徽章值发送为 1 那么如果应用程序未打开 我如何增加应用程序图标中的徽章值 我已经使用了这段代码 但不起作用 void application UIAppli
  • 如何将nsmutable数组添加到sqlite数据库表中

    如何将nsmutablearray添加到sqlite数据库表中 有人可以帮我编码吗 您可以使用 for int i 0 i lt mutArray count i NSString string mutArray objectAtIndex
  • 带有自定义字体的 UILabel 错误呈现

    在我的 iPhone 应用程序中 我为所有 UILabel 设置了自定义字体 更准确地说 我对 UILabel 进行了子类化 重写了一个方法 在该方法中设置了自定义字体 然后将 IB 中的所有标签设置为该自定义类 现在的问题是 所有文本都渲
  • 如何检测 UIImage 的非透明部分何时与 UIImage 的另一个非透明部分接触

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

    任何人都知道或可以提供一些与 timeIntervalSinceNow 方法相关的示例代码 我需要类似的东西 time2 当应用程序进入前台时 time1 当应用程序进入后台时 time3 时间差 这样我就可以使用这个数字 以秒为单位的首选
  • iPhone 中的 UIGlassButton

    有人使用 Glass Button 提交过申请吗 获得批准了吗 我正在尝试使用彩色圆形按钮 但不想使用这些技巧 如何在 iPhone 上设置按钮背景颜色 https stackoverflow com questions 372731 ho
  • 如何对 iPad 应用程序进行类转储?

    我正在尝试运行 iPad 应用程序的类转储来探索其架构 我使用 The Unarchiver 提取了 ipa 文件 并从 Payload 文件夹中对 app 文件运行了 class dump 但是 我收到此错误 Generated by c
  • iPhone Core Graphics 子视图的粗虚线

    我有一个UIView在其中我通过覆盖使用 Core Graphics 画了一条线drawRect 该视图还包含一个子视图 该子视图也绘制一条线 然而 虽然两个视图都使用几乎相同的代码 至少出于测试目的 但在它们上绘制的线看起来并不相同 正如
  • iOS 上每个选项的带有图像的操作表

    有没有办法在 iOS 上将图像添加到操作表中 与苹果在应用程序商店或苹果音乐应用程序上所做的一样 我对苹果文档的基本搜索表明我没有在操作表中子类化或添加子视图 UIActionSheet 并非设计为子类化 也不应向其层次结构添加视图 苹果文
  • Facebook oauth/access_token 丢失

    不知道我是否错过了什么 但就这样 我正在尝试为我的应用程序获取 access token 以便它可以在 facebook 上查找某些公共群组的事件 而无需用户登录 我试图从中获取 access token 这将返回一个字符串 access
  • 如何等待 webViewDidFinishLoad 完成

    我有一个初始化 webView 的布尔条件 并在 webViewDidFinishLoad 中加载另一个委托 以便在完成完成后触发 但是 由于布尔值在条件 webViewDidFinishLoad 之前返回 因此页面永远不会完全加载 如何确
  • MKMapView 中显示多个注释标注

    是否可以同时打开多个标注 代码 void mapViewDidFinishLoadingMap MKMapView theMapView for id
  • 如何添加授权以从新钥匙串对应用程序进行代码签名,而无需任何人工交互

    我正在尝试使用特定证书自动化构建 iPhone 应用程序的过程 因此 想象一下 如果不同的用户将他们的证书上传到系统中 并且可以立即用于代码签名 我想在没有任何交互的情况下做到这一点 我也不想用不同的用户证书弄乱系统或登录钥匙串 为此我有
  • iPhone SDK - 在后台线程中运行重复进程

    我有一个iPhone我想在其中每隔一段时间在后台执行一个方法的应用程序1第二 所以在我的主线程中 我有以下代码UIViewController viewDidLoad NSTimer timerWithTimeInterval 1 0 ta
  • 增加 NSData 的长度

    基本上 我有一个 46 个字符的 NSString 我将其转换为 NSData 我需要将字符串填充到 48 个字符 仅在 NSString 末尾添加 是行不通的 所以 我只是使用以下方法增加了 NSData 的长度 NSString str
  • 为什么 GDB 调试器不断冻结 Xcode 4?

    这真是一个奇怪的错误 我正在开发一个使用相机源的 iPhone 项目 并通过 OpenGL 着色器运行它以对其应用效果 然而 每次我在代码中简单地创建一个新的 GLfloat 时 调试器都会在启动时冻结 我无法复制和粘贴文本 因为整个 XC

随机推荐

  • 如何在 SVG 中获取多个内容的 ScrollBars

    我想要一个包含四个 SVG 内容的容器 SVG 现在 这四个 SVG 内容的内容超出了容器 SVG 中分配给它们的区域的内容 因此我要求滚动条自动出现 以便用户可以通过滚动看到完整的 svg 内容 我尝试通过添加属性宽度和高度来建立新视口
  • 从 vc++ 调用存储在堆中的代码

    想象一下我正在做这样的事情 void p malloc 1000 char p some opcode char p 1 another opcode for the sake of the example the opcodes are
  • 在 SWT-Widgets 上自动生成 ID

    有没有办法在 SWT Widgets 上自动生成 ID 以便 UI Tests 可以引用它们 我知道我可以使用 seData 手动设置 id 但我想以某种通用的方式为现有应用程序实现此功能 您可以使用以下命令为应用程序中的所有 shell
  • python 客户端服务器编程?

    这是 python 中的多线程服务器和客户端的源代码 在代码中 客户端和服务器在作业完成后关闭连接 我想保持连接处于活动状态并通过相同的连接发送更多数据避免每次关闭和打开套接字的开销 以下代码来自 http www devshed com
  • 为什么我的解决方案如此慢以及如何提高查询性能?

    目前我已经能够优化很多性能 但仍然有点慢 最新编辑 我当前的解决方案 最快的自动取款机 但仍然很慢 并保持秩序 server router post images function req res next var image bucket
  • 数组名是指针吗?

    C 中数组的名称是指针吗 如果不是 数组名称和指针变量有什么区别 数组是数组 指针是指针 但大多数情况下数组名称是转换的到指针 经常使用的一个术语是它们decay到指针 这是一个数组 int a 7 a包含七个整数的空间 您可以通过赋值将值
  • Pyspark 列转换:计算列中每个组的百分比变化

    我在本地计算机上使用 Pyspark 我有一个包含 450 万行和大约 30 000 种不同股票的 Spark 数据框 我需要计算每只股票随时间变化的百分比 我已经运行了 orderBy 以便将所有股票分组在一起 如下例所示 下面是一个简化
  • 在curl 7.33.0中使用--http2.0选项给出了不受支持的协议

    我使用的是centos 6 2 我需要在其中一个服务器请求中使用curl http2 0 但在查看之后我使用的是7 19 6http curl haxx se docs manpage html给我 http2 0 选项仅支持curl 7
  • Python:使用自动 Y 缩放绘制烛台

    我正在寻找一个Python绘图库 它允许我通过鼠标滚轮滚动 或类似 进行X缩放并在缩放时自动缩放Y轴来绘制烛台 最好是OHLC柱变体 作为我正在寻找的一个例子 tradingview com 完美地做到了这一点 看https uk trad
  • Spring Cloud:Feign 和 Http 连接池

    谁能告诉我 Spring Cloud Feign 客户端是否提供或支持 Http 连接池 如果是 如何配置池大小等设置 我在官方文档中似乎找不到这个 谢谢 通过调查 我将尝试回答我自己的问题 Spring Cloud Feign 使用 Ne
  • 为什么将闭包传递给接受函数指针的函数不起作用?

    In the 第二版Rust 编程语言 强调我的 函数指针实现了所有三个闭包特征 Fn FnMut and FnOnce 因此您始终可以将函数指针作为参数传递给需要闭包的函数 最好使用泛型类型和闭包特征之一来编写函数 以便您的函数可以接受函
  • 如何创建和使用ASP.NET vNext类库NuGet包?

    我想创建 ASP NET vNext 类库的 NuGet 包 我该怎么做 一步一步 我明白有kpm build 但我找不到关于在哪里下载 kpm 等的指南 另外 在获得它的 NuGet 包 或 DLL 后 如何将其从本地计算机添加到我的 v
  • 如何快速更新Google云存储上的静态站点?

    我有一个托管在谷歌云存储上的静态网站 我按照此处描述的相同方法进行设置 https cloud google com storage docs hosting static website 我已经购买了一个域名 目前网站运行顺利 我仍在更改
  • Asp.Net (MVC):哪个会话超时是什么?

    我制作了一个 Asp net MVC 网站 我对不同的超时设置感到非常困惑 有什么区别 web config 中的 SessionState 超时 应用程序池超时 Asp Net 会话超时属性 如果我想要 例如 6 小时的超时 我应该设置哪
  • PyQt4 - 从 QListWidget 中删除项目小部件

    我有一个 QListWidget 我需要删除一些项目 根据我的研究 这通常是一件令人不愉快的事情 我已经阅读了大量的解决方案 但没有一个适用于我的特定场景 目前 我只有实际的 Item Widgets 需要处理 不是它们的值或索引 这是因为
  • Visual Studio 忽略 #if DEBUG / RELEASE 范围内的代码,并且不检查错误或自动完成

    我一直在写一个 if DEBUG else endif代码片段 我注意到 Visual Studio 不允许我使用自动完成来完成部分键入的成员名称 并且它不会检查灰显的非活动代码是否有错误 我发现让它再次受到关注的唯一方法是将构建模式从 调
  • 在 LESS 中引用具有多层嵌套的父级

    我有以下较少 container column columns one width 40px 当我编译时 我的 CSS 得到以下内容 one container column one container columns width 40px
  • 在 Apache Spark Join 中包含空值

    我想在 Apache Spark 连接中包含空值 默认情况下 Spark 不包含带有 null 的行 这是默认的 Spark 行为 val numbersDf Seq 123 456 null toDF numbers val letter
  • ASP.net 中的 SendEmail 显示语法错误,命令无法识别。服务器响应是:Dovecot 就绪

    我想使用 ASP NET 发送邮件 代码如下 public void Semail string subject string messageBody string toAddress MailMessage mail new MailMe
  • 从 CGImageRef 创建的 UIImage 失败并显示 UIImagePNGRepresentation

    我使用以下代码从较大的 UIImage 中裁剪并创建一个新的 UIImage 我已将问题与函数 CGImageCreateWithImageInRect 隔离开来 该函数似乎没有按照我想要的方式设置某些 CGImage 属性 问题是调用函数