blob: 237049f90f705e98ad541ecfe1025c9400aa8204 [file] [log] [blame]
import '../color.dart';
import '../image.dart';
import '../internal/clamp.dart';
/// Apply sepia tone to the image.
///
/// [amount] controls the strength of the effect, in the range 0.0 - 1.0.
Image sepia(Image src, {num amount = 1.0}) {
if (amount == 0) {
return src;
}
var p = src.getBytes();
for (int i = 0, len = p.length; i < len; i += 4) {
int r = p[i];
int g = p[i + 1];
int b = p[i + 2];
int y = getLuminanceRGB(r, g, b);
p[i] = clamp255(((amount * (y + 38)) + ((1.0 - amount) * r)).toInt());
p[i + 1] = clamp255(((amount * (y + 18)) + ((1.0 - amount) * g)).toInt());
p[i + 2] = clamp255(((amount * (y - 31)) + ((1.0 - amount) * b)).toInt());
}
return src;
}