getBytes method
Similar to toUint8List, but will convert the channels of the image pixels
to the given order
. If that happens, the returned bytes will be a copy
and not a direct view of the image data.
Implementation
Uint8List getBytes({ChannelOrder? order}) {
if (order == null) {
return toUint8List();
}
if (numChannels == 4) {
if (order == ChannelOrder.abgr ||
order == ChannelOrder.argb ||
order == ChannelOrder.bgra) {
final tempImage = clone();
if (order == ChannelOrder.abgr) {
for (final p in tempImage) {
final r = p.r;
final g = p.g;
final b = p.b;
final a = p.a;
p
..r = a
..g = b
..b = g
..a = r;
}
} else if (order == ChannelOrder.argb) {
for (final p in tempImage) {
final r = p.r;
final g = p.g;
final b = p.b;
final a = p.a;
p
..r = a
..g = r
..b = g
..a = b;
}
} else if (order == ChannelOrder.bgra) {
for (final p in tempImage) {
final r = p.r;
final g = p.g;
final b = p.b;
final a = p.a;
p
..r = b
..g = g
..b = r
..a = a;
}
}
return tempImage.toUint8List();
}
} else if (numChannels == 3) {
if (order == ChannelOrder.bgr) {
final tempImage = clone();
for (final p in tempImage) {
final r = p.r;
p
..r = p.b
..b = r;
}
return tempImage.toUint8List();
}
}
return toUint8List();
}