我想在 C SDL 中放大图像

问题描述 投票:0回答:1

我需要拍摄一张 m * m 的图像并返回一张 n * n 的图像。

我有这个代码:

void Zoom_Filter(SDL_Surface* surface)

int newsize = 28;

Uint32* pixels = surface -> pixels;
Uint32* pixels2 =  malloc(newsize*newsize*sizeof(Uint32));

int cote = surface -> w;


double Zoom = ((double)newsize)/(double)cote;

for(int i = 0; i < newsize; i++)
{
    for(int j = 0; j < newsize; j++)
    {
        int X = j/Zoom;
        int Y = i/Zoom;
        Uint32 px = pixels[(Y*cote + X)];
        pixels2[i * newsize + j] = px;
    }
}

surface -> w = newsize;
surface -> h = newsize;
surface -> pixels = pixels2;

但是效果不太好:

结果:

c zooming sdl sdl-2
1个回答
0
投票

我已经找到答案了。 我认为 SDL 在直接修改图像大小和像素列表大小时存在一些问题。 为了使其工作,我刚刚创建了一个新表面。 谢谢您的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.