gpt4 book ai didi

iphone - 图片大小调整错误 : CGBitmapContextCreate: unsupported parameter

转载 作者:太空狗 更新时间:2023-10-30 03:26:15 26 4
gpt4 key购买 nike

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

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: unsupported parameter combination: 8 integer bits/component; 32 bits/pixel; 3-component colorspace; kCGImageAlphaNoneSkipFirst; XXX bytes/row.

其中 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 不是整数。请注意,它是 float 。

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

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

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

关于iphone - 图片大小调整错误 : CGBitmapContextCreate: unsupported parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2235210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com