image method
Print an image using (ESC *) command
Implementation
List<int> image(RasterImage imgSrc, {PosAlign align = PosAlign.center}) {
List<int> bytes = [];
bytes += setStyles(const PosStyles().copyWith(align: align));
final RasterImage img = imgSrc.clone();
img.invertRgb();
final RasterImage flipped = img.flipHorizontal();
final RasterImage rotated = flipped.rotate270();
const int lineHeight = 3; // highDensityVertical
final List<List<int>> blobs = toColumnFormat(rotated, lineHeight * 8);
for (int i = 0; i < blobs.length; i++) {
blobs[i] = _packBitsIntoBytes(blobs[i]);
}
final int heightPx = rotated.height;
const int densityByte = 1 + 32; // highDensityHorizontal + highDensityVertical
final List<int> header = List.from(cBitImg.codeUnits);
header.add(densityByte);
header.addAll(_intLowHigh(heightPx, 2));
bytes += [27, 51, 16];
for (int i = 0; i < blobs.length; ++i) {
bytes += List.from(header)
..addAll(blobs[i])
..addAll('\n'.codeUnits);
}
bytes += [27, 50];
return bytes;
}