菜鸟教程小白 发表于 2022-12-12 23:53:28

ios - 从上下文创建子图像


                                            <p><p>我想知道是否有办法创建一个 <code>CGImage</code> 对应于上下文中的一个矩形?</p>

<p>我现在在做什么:</p>

<p>我正在使用 <code>CGBitmapContextCreateImage</code> 从上下文创建 <code>CGImage</code>。然后,我使用 <code>CGImageCreateWithImageInRect</code> 来提取该子图像。</p>

<p>阿尼尔</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>试试这个:</p>

<pre><code>static CGImageRef createImageWithSectionOfBitmapContext(CGContextRef bigContext,
    size_t x, size_t y, size_t width, size_t height)
{
    uint8_t *data = CGBitmapContextGetData(bigContext);
    size_t bytesPerRow = CGBitmapContextGetBytesPerRow(bigContext);
    size_t bytesPerPixel = CGBitmapContextGetBitsPerPixel(bigContext) / 8;
    data += x * bytesPerPixel + y * bytesPerRow;
    CGContextRef smallContext = CGBitmapContextCreate(data,
      width, height,
      CGBitmapContextGetBitsPerComponent(bigContext), bytesPerRow,
      CGBitmapContextGetColorSpace(bigContext),
      CGBitmapContextGetBitmapInfo(bigContext));
    CGImageRef image = CGBitmapContextCreateImage(smallContext);
    CGContextRelease(smallContext);
    return image;
}
</code></pre>

<p>或者这个:</p>

<pre><code>static CGImageRef createImageWithSectionOfBitmapContext(CGContextRef bigContext,
    size_t x, size_t y, size_t width, size_t height)
{
    uint8_t *data = CGBitmapContextGetData(bigContext);
    size_t bytesPerRow = CGBitmapContextGetBytesPerRow(bigContext);
    size_t bytesPerPixel = CGBitmapContextGetBitsPerPixel(bigContext) / 8;
    data += x * bytesPerPixel + y * bytesPerRow;
    CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, data,
      height * bytesPerRow, NULL);
    CGImageRef image = CGImageCreate(width, height,
      CGBitmapContextGetBitsPerComponent(bigContext),
      CGBitmapContextGetBitsPerPixel(bigContext),
      CGBitmapContextGetBytesPerRow(bigContext),
      CGBitmapContextGetColorSpace(bigContext),
      CGBitmapContextGetBitmapInfo(bigContext),
      provider, NULL, NO, kCGRenderingIntentDefault);
    CGDataProviderRelease(provider);
    return image;
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 从上下文创建子图像,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/13664259/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/13664259/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 从上下文创建子图像