調整影像曝光和先前的調整影像亮度很像, 曝光增加影像越亮, 曝光減少影像越暗. 差異其實在於調整亮度時用加減法處理RGB, 調整曝光時用乘除法處理RGB. 在沒有過度曝光下, 乘除法處理的RGB比例會一致, 缺點是調整範圍比較大, 容易有做過度的問題. 所以調整曝光範圍設為0.1到2之間.
function adjustExposure() {
var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
var data = imageData.data;
var adjustedData = data.slice();
for (var i = 0; i < adjustedData.length; i += 4) {
adjustedData[i] *= exposure; // R
adjustedData[i + 1] *= exposure; // G
adjustedData[i + 2] *= exposure; // B
}
ctx.putImageData(new ImageData(new Uint8ClampedArray(adjustedData), canvas.width, canvas.height), 0, 0);
}
JavaScript完整程式放在網址 曝光調整 (cardteck.com)
我用下面AI圖來當原圖做實驗.
調整曝光1.4後的影像. 有些亮的部分已經過曝了,但是整體不會霧霧的.
調整曝光0.7後的影像.
由於128 *1.4-128=51.2 我用51來調整亮度來比較看看. 感覺比較像上了一層均勻的霧.
128*(1-0.7)=38.4, 減亮度38後的影像如下. 亮度調暗後卻沒有霧的感覺. 只能說要用曝光還是亮度調整, 可能要試過才知道. 這個例子我比較喜歡曝光的感覺.