画像サイズが2x2なので、ピクセル数= 4
1ピクセル-4バイト
したがって、16バイトの配列があります--mas[16]-幅*高さ*4 = 16
同じ画像を作りたいのですが、サイズが2倍になります。つまり、1つではなく4つのピクセルになります。
新しい配列のサイズは64バイトになります--newMas[16]-width* 2 * height * 2 * 4
問題は、ピクセルをnewMasに正しくコピーできないこと、異なるサイズの画像でピクセルを正しくコピーすることです。
このコードはピクセルをmas[16]にコピーします
size_t width = CGImageGetWidth(imgRef);
size_t height = CGImageGetHeight(imgRef);
const size_t bytesPerRow = width * 4;
const size_t bitmapByteCount = bytesPerRow * height;
size_t mas[bitmapByteCount];
UInt8* data = (UInt8*)CGBitmapContextGetData(bmContext);
for (size_t i = 0; i < bitmapByteCount; i +=4)
{
UInt8 a = data[i];
UInt8 r = data[i + 1];
UInt8 g = data[i + 2];
UInt8 b = data[i + 3];
mas[i] = a;
mas[i+1] = r;
mas[i+2] = g;
mas[i+3] = b;
}