English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類
0

我想請問24bit BMP縮小 要用C語言寫如何實現阿
我不是要妳幫我寫程式 是要告訴我 原理 還是他有公式阿
頭檔那邊不用說了 我是想知道 RGB那邊的處理

2007-02-05 08:53:32 · 1 個解答 · 發問者 哆啦A夢 1 in 電腦與網際網路 程式設計

內插法 是什麼

我是說本來是 800*600 或更大的
縮小為 N 倍 800/N * 600/N
再把他存到另一個檔案

2007-02-05 15:48:00 · update #1

對不起喔 你說是用平均 可是妳寫的我看不出來哪裡有平均呢

2007-02-06 11:07:20 · update #2

1 個解答

最簡單的就是內插法啊!
這比 RGP 和檔頭簡單耶!
不知你是哪裡不懂

2007-02-05 21:42:52 補充:
內插是放大的。
縮小是用平均。

設原大小 X, Y
新大小 x, y

Rx = X / x
Ry = Y / y

for (i=0; i for (r=g=b=j=0; j { for (a=0; a { for (b=0; b r = p[i*Rx a][j*Ry b].r,
g = p[i*Rx a][j*Ry b].g,
b = p[i*Rx a][j*Ry b].b;
}

2007-02-05 21:43:10 補充:
p[i][j].r = r,
p[i][j].g = g,
p[i][j].b = b,
}

沒 debug,大致像這樣。
當然,你不一定要 1:1 平均
若是 Rx Ry 非整數,你也可以再做一些小調整。

加油! ^_^

2007-02-06 22:27:06 補充:
不好意思:
1. +被吃了。沒注意
2. 的確漏寫了平均的部份。
3. 果然有2個 bug!

2007-02-06 22:27:24 補充:
for (i=0; i for (r=g=b=j=0; j { for (a=0; a { for (r=g=b=c=0; c r += p[i*Rx+a][j*Ry+c].r,
g += p[i*Rx+a][j*Ry+c].g,
b += p[i*Rx+a][j*Ry+c].b;
}

p[i][j].r = r/Rx/Ry,
p[i][j].g = g/Rx/Ry,
p[i][j].b = b/Rx/Ry;

+要改成半型

2007-02-05 09:12:36 · answer #1 · answered by ? 7 · 0 0

fedest.com, questions and answers