图像调整大小错误:CGBitmapContextCreate:不支持的参数

2024-01-11

我正在使用以下代码(来自博客文章)来调整图像大小

if (inImage.size.width <= inImage.size.height) {
    // Portrait
    ratio = inImage.size.height / inImage.size.width;
    resizedRect = CGRectMake(0, 0, width, width * ratio);
}
else {
    // Landscape
    ratio = inImage.size.width / inImage.size.height;
    resizedRect = CGRectMake(0, 0, height * ratio, height);
}

CGImageRef          imageRef = [inImage CGImage];
CGImageAlphaInfo    alphaInfo = CGImageGetAlphaInfo(imageRef);

if (alphaInfo == kCGImageAlphaNone)
    alphaInfo = kCGImageAlphaNoneSkipLast;

CGContextRef bitmap = CGBitmapContextCreate(
                                            NULL,
                                            resizedRect.size.width,     // width
                                            resizedRect.size.height,        // height
                                            CGImageGetBitsPerComponent(imageRef),   // really needs to always be 8
                                            4 * resizedRect.size.width, // rowbytes
                                            CGImageGetColorSpace(imageRef),
                                            alphaInfo
                                            );

但由于某种原因,根据大小,我尝试调整大小,生成以下错误

CGBitmapContextCreate:不支持 参数组合:8个整数 位/组件; 32 位/像素; 3 分量色彩空间; kCGImageAlphaNoneSkipFirst; XXX 字节/行。

其中 XXX 因图像而异。

我创建的矩形与图像成比例,我从宽度/高度(取决于宽高比)和目标宽度/高度的倍数中获取一个比率。

以下是一些示例(X 错误,/没有),调整大小将为 50xX 或 Xx50,具体取决于方面:

Source   50x50   69x69
430x320  /      X
240x320  /      /
272x320  /      /
480x419  /      X
426x320  X      X
480x256  X      X

你写的地方thumbRect, 你的意思resizedRect? thumbRect否则不会发生。

我怀疑问题在于resizedRect.size.width是非积分的。请注意,它是浮点数。

width 和 bytesPerRow 参数CGBitmapContextCreate被声明为整数。当您传递浮点值时(例如此处),它会被截断。

假设你的resizedRect.size.width是1.25。然后,您最终将传递 1 作为宽度,并传递 Floor(1.25 * 4) == 5 作为每行的字节数。这是不一致的。无论您为每行字节的宽度传递什么内容,您总是希望传递四次。

顺便说一句,您也可以将 bytesPerRow 保留为 0。然后系统选择最好的 bytesPerRow(通常大于宽度的 4 倍 - 为了对齐而进行填充)。

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

图像调整大小错误:CGBitmapContextCreate:不支持的参数 的相关文章

  • 以编程方式单击 tabbarController 的选项卡

    我有 2 个带有 Nib 文件的选项卡按钮 在按下选项卡 1 上的按钮时 我希望它显示选项卡 2 的视图 而不是单击选项卡栏按钮 2 我的意思是 我想以编程方式单击第二个选项卡栏按钮 我怎样才能做到这一点 可能吗 您必须创建一个包含以下内容
  • 如何获取原始触摸屏数据?

    我知道我可以在 iPhone 应用程序中获取触摸事件 但这些触摸事件都被我过滤掉了 如果我将设备按在脸上 它会过滤掉这些触摸事件 因为它可以检测到它不是手指 我如何获得原始触摸事件 而不以任何方式过滤 没有用于此目的的公共 API 您可以获
  • 将 NSString 分离成 N​​SArray,但允许用引号对单词进行分组

    我有一个搜索字符串 人们可以使用引号将短语组合在一起 并将其与单个关键字混合 例如 像这样的字符串 Something amazing rooster 我想把它分成一个 NSArray 这样它就有Something amazing 不带引号
  • 如何去除 UIImageView 遮罩后的透明区域?

    在我的一个 iOS 应用程序中 我尝试使用以下命令剪切图像的一部分CGImageMask 我已成功使用以下代码屏蔽图像 UIImage maskImage UIImage referenceImage withMask UIImage ma
  • 将 iCloud 存储迁移到本地存储并确保每次应用程序启动时数据都在那里

    基于这里的问题 将 iCloud 数据迁移到本地存储并阻止 iCloud 继续响应 https stackoverflow com questions 25186787 migrate icloud data to local store
  • nspredicate 数组中的多个项目

    如何使用NSPredicate满足多个条件 NSEntityDescription entity NSEntityDescription entityForName MessageData inManagedObjectContext ma
  • 如何在 iPhone 应用程序中使用正则表达式以 , (逗号)分隔字符串

    我必须读取包含三列的 csv 文件 在解析 csv 文件时 我得到了这种格式的字符串克里斯托弗 巴斯 为心爱的国家哭泣 期末论文 电子邮件受保护 cdn cgi l email protection 我想将三列的值存储在一个数组中 所以我使
  • UILocalNotification 播放自定义声音

    我在我的应用程序中实现了本地通知 但我只是想知道是否有一种方法可以播放不属于 iPhone 应用程序主包的一部分的声音 基本上在我的应用程序中 我希望用户录制生成本地通知时播放的声音 而不是播放预先录制的或默认的声音 据我所知 这是可以实现
  • 错误域=NSURLErrorDomain代码=-1017“该操作无法

    我刚刚开始 ios 开发 我正在尝试与我的 api 交换数据 当我执行 POST 请求时 一切正常 但当我尝试执行 GET 请求时 出现以下错误 错误域 NSURLErrorDomain代码 1017 该操作无法 完全的 NSURLErro
  • 如何将 UIPopoverPresentationController 的高度设置为与 UITableView 相同

    我在我的应用程序上使用 UIPopoverPresentationController 在我的 iPhone 上显示弹出窗口 使用 UIModalPresentationNone 我希望尺寸随着 UITableView 的高度而动态变化 但
  • UITableViewCell 的 viewDidAppear

    我通常使用viewDidAppear方法在视图完成出现后在视图上执行一些 UI 操作 我在各种情况下使用了此方法 它非常有用 但是 我需要在视图上进行一些 UI 更改UITableViewCell当它完成出现后 SDK中是否有任何可用的方法
  • 创建自定义 MCBrowserViewController

    有没有办法创建一个UITableView包含在中找到的相同信息MCBrowserViewController 我当前的代码只允许推送与我的应用程序设计不同的标准视图 self browserVC MCBrowserViewControlle
  • iPad 2 检测

    由于我没有 iPad 2 因此我需要知道调用 UIDevice currentDevice model 时它返回什么 我以为它只返回 iPad 但看来我错了 有人可以告诉我吗 Thanks 检查是否有带摄像头的 iPad BOOL isIP
  • 如何在 UIAlertView (iOS) 中的其他两个按钮(堆叠)之间添加取消按钮

    我正在尝试创建一个带有三个按钮 将堆叠 的 UIAlertView 我希望 取消 按钮位于其他两个按钮之间的中间 我尝试将 cancelButtonIndex 设置为 1 但如果还有其他两个按钮 它只会将它们放置在索引 0 和 1 处 我知
  • iOS:加载时的设备方向

    似乎当我的应用程序加载时 它不知道其当前方向 UIInterfaceOrientation orientation UIDevice currentDevice orientation if orientation UIDeviceOrie
  • rightBarButtonItem 信息按钮,右侧没有空格

    我有一个UIViewController设置为在其右侧显示一个信息按钮UINavigationItem像这样 UIButton infoButton UIButton buttonWithType UIButtonTypeInfoLight
  • 在 iOS 中从 ACAccountStore 获取 Facebook uid?

    您好 我想获取 Facebook 用户的 UIDAC帐户商店在 iOS 6 中 self accountStore ACAccountStore alloc init ACAccountType FBaccountType self acc
  • 使用远程图像创建 MSSticker

    我正在尝试找出使用网络上托管的图像创建 MSStickers 的方法 我可以使用本地图像创建 MSStickers 例如 NSString imagePath NSBundle mainBundle pathForResource imag
  • 如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?

    我尝试了多个 SDK 但无法从任何资源获取电子邮件 ID 我努力了FHSTwitterEngine为此目的 但我没有得到解决方案 FHSTwitterEngine twitterEngine FHSTwitterEngine sharedE
  • 无法从 iOS 中的框架访问 .nib(XIB) 文件

    我已经从现有的代码库中创建了一个框架 并尝试在新的代码库中使用它 这很好用 但是当我尝试访问属于我的框架包的一部分的 nib 文件时 我的应用程序崩溃了 这是我用来访问视图控制器 XIB 文件的代码 testViewController c

随机推荐

  • 如何比较/验证 sql 模式

    我正在寻找一种在更新应用程序版本后验证生产数据库上的 SQL 架构的方法 如果应用程序与数据库模式版本不匹配 则应该有一种方法来警告用户并列出所需的更改 是否有具有内置功能的工具或框架 以编程方式使用 可以做到这一点 或者有一些简单的算法来
  • 如何使用 KSOAP2 和 Android 从 Web 服务接收消息

    我尝试做一个简单的 ksoap2 教程 这是link http seesharpgears blogspot de 2010 11 basic ksoap android tutorial html 我的问题是 如果我使用 SoapPrim
  • 如何更改 JFreeChart 中 NumberAxis 上的刻度标签?

    我正在使用 JFreeChart 并且希望能够将范围轴上的标签从数字更改为对我所在域更有意义的内容 我只看到用于自定义标签外观的选项 无法覆盖基于刻度线位置的标签 有谁知道如何覆盖tickLabel的文本 JFreeChartBarChar
  • 在 Spring Batch 中动态替换配置 xml 文件中占位符的值

    我正在使用 Spring Batch 2 版本 我正在使用从数据库读取数据JdbcCursorItemReader 我已成功获取数据并将其写入文件 下边是itemReader bean定义于Job xml File
  • 如何在 WebApp2 中解析 A​​ngular POST 请求

    如何从 Google App Engine WebApp2 中的 Angular POST 请求获取数据 self request body返回一个字符串 并且self request get key 什么也不返回 提交 POST 的 An
  • Java线程安全只写hashmap

    在我的 Java 类中 我包括一个Hashmap变量 类属性 并运行一些只写该变量的线程HashMap using put 每次写入发生时 它都会存储一个唯一的密钥 这是由设计完成的 Is the synchronized类方法上的关键字只
  • Android BootReceiver 不起作用

    我正在尝试监听重启事件 我创建了以下课程 import android content BroadcastReceiver import android content Context import android content Inte
  • C 内联汇编标签问题

    我目前是汇编的初学者 正在学习如何在课程中使用 C 内联汇编 话虽如此 当我编译文件时 我遇到了这个特定错误 tmp cckHnU89 s Assembler messages tmp cckHnU89 s 550 Error symbol
  • 为什么 iOS 需要启动图像? [复制]

    这个问题在这里已经有答案了 iOS 应用程序必须有启动图像吗 应用程序启动时会显示多长时间 我们可以控制时长吗 iOS 文档指出 启动图像是 App Store 提交的必要条件 但是我目前有一个可用的应用程序 但没有 只是忘记添加它 所以看
  • 我应该在 NSCell 上调用什么方法

    我正在使用自定义 NSCell 编写自定义 NSControl 它是一个控件 因此它必须响应鼠标 我在我的控制范围内创建了一个 NSTrackingArea 并实现了 mouseEntered mouseExited and mouseMo
  • 计算 1^X + 2^X + ... + N^X mod 1000000007

    有没有什么算法可以计算 1 x 2 x 3 x n x mod 1000000007 Note a b是a的b次方 约束条件是1 lt n lt 10 16 1 lt x lt 1000 所以N的值很大 我只能解决O m log m if
  • 异步 Servlet 与同步 Servlet

    Since Servlet 3 0异步处理 http www javaworld com javaworld jw 02 2009 jw 02 servlet3 html是支持的 始终使用异步处理会更好吗 或者说在什么情况下同步处理更好 使
  • Firefox 上的 JavaScript 错误:TypeError:无法重新定义不可配置的属性“userAgent”

    我目前在错误监控工具 Sentry 上收到一个奇怪的 JavaScript 错误 上面写着can t redefine non configurable property userAgent 似乎该错误发生在多个页面上 但仅发生在 Fire
  • 如何转换 Array? Kotlin 中的 Array

    我正在 Kotlin 中迈出第一步 并尝试编写一个简单的字符串分割函数 我是这样开始的 fun splitCSV s String Array
  • 拒绝加载字体 - Angular 2

    我从 Angular 2 开始 一直在研究路线 当我没有路线时 一切正常 但现在每次我去 home 时 都会收到此错误 Refused to load the font data font woff base64 d09GRgABAAAAA
  • conda 无法与 Fish shell 一起正常工作

    在 macOS 上的 Fish shell 内使用 conda 环境时 python仍然指向系统 python usr local bin python 而不是指向conda环境安装的python版本
  • 如何获取存储在 Azure 存储帐户中的数字文件的下载 URL

    存储后digital file in Azure blob storage 我想提供一个link到我的那个文件static website 具有no服务器端代码 当用户单击该链接时 用户应该能够将该数字文件下载到他 她的计算机上 Quest
  • 如何“放弃”表单更改?

    Setup 我有一个表格和一个 提交 按钮 理想情况下 用户应该填写表格 单击 提交 然后离开选项卡 如果他尝试离开选项卡而不保存更改 我需要通过 3 个选项提醒他 Save 放弃 放弃表单数据更改 并保留选项卡 就好像数据从未被修改过一样
  • Rspec 未在 Linux 中加载 ControllerMacros 模块(但在 OS X 上正常)

    我在使用 Devise 和 Rspec 的 Rails 应用程序中编写了一些控制器测试 下列的本指南 https github com plataformatec devise wiki How To Test controllers wi
  • 图像调整大小错误:CGBitmapContextCreate:不支持的参数

    我正在使用以下代码 来自博客文章 来调整图像大小 if inImage size width lt inImage size height Portrait ratio inImage size height inImage size wi