菜鸟教程小白 发表于 2022-12-12 16:46:50

ios - 如何使用图像的像素数据将图像旋转 90 度?


                                            <p><p>目前我正在使用 glreadpixels() 捕获屏幕。捕获的图像通常是镜像图像,因此我将图像翻转回正常。
现在我想将捕获的数据(图像)旋转 90 度。
知道怎么做吗?</p>

<p>我用来捕获屏幕数据的代码是:</p>

<pre><code>CGRect screenBounds = [ bounds];

int backingWidth = screenBounds.size.width;
int backingHeight =screenBounds.size.height;

glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &amp;backingWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &amp;backingHeight);


NSInteger myDataLength = backingWidth * backingHeight * 4;
GLuint *buffer;
if((buffer= (GLuint *) malloc(myDataLength)) == NULL )
    NSLog(@&#34;error initializing the buffer&#34;);
glReadPixels(0, 0, backingWidth, backingHeight, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
// code for flipping back (mirroring the image data)   
for(int y = 0; y &lt; backingHeight / 2; y++) {
    for(int xt = 0; xt &lt; backingWidth; xt++) {
      GLuint top = buffer;
      GLuint bottom = buffer[(backingHeight - 1 - y) * backingWidth + xt];
      buffer[(backingHeight - 1 - y) * backingWidth + xt] = top;
      buffer = bottom;
    }
}
</code></pre>

<p>知道如何将缓冲区中捕获的数据旋转 90 度吗?
谢谢</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><pre><code>size_t at (size_t x, size_t y, size_t width)
{
    return y*width + x;
}

void rotate_90_degrees_clockwise (
    const pixel * in,
    size_t in_width,
    size_t in_height,
    pixel * out)
{
    for (size_t x = 0; x &lt; in_width; ++x) {
      for (size_t y = 0; y &lt; in_height; ++i)
            out
               = in ;
    }
}
</code></pre>

<p>有时,没有什么比用纸笔写一分钟更好的了 :-)</p>

<p>如果您维护 x_in 和 y_in 与 x_out 和 y_out(递增一个并递减另一个)并在循环之间缓存 x,则可以对此进行优化,但这是基本思想。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何使用图像的像素数据将图像旋转 90 度?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/6745835/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/6745835/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何使用图像的像素数据将图像旋转 90 度?