图像rip 挂网 灰度图转单色,2bit图
tiff 彩色 CMYK打印cmyk 4通道灰度图提取8位灰度图转单色(二值图仅0和255),3级灰度图,后续转为2bit图,进行彩色印刷,打印。如简单的进行阈值二值化,或者通过抖动则效果差很多,以下是挂网后图效果。
tiff 彩色 CMYK打印
通常彩色打印,印刷,需要Tiff 图并为cmyk印刷模式,软件会将其分离成4通道8位灰度图,如果图像不是cmyk模式图而是rgb图,则需要将rgb转为cmyk,如下c++代码
///RGB转cmyk 此方法做了8倍宽度对齐
static void rgbtocmyk(BYTE* &rgb, BYTE*& buf_c, BYTE*& buf_m, BYTE*& buf_y, BYTE*&buf_k, int &w, int &h)
{
BYTE* buf_rgb = rgb + 54;
int linewidth = (((BITMAPINFO*)(rgb + sizeof(BITMAPFILEHEADER)))->bmiHeader.biWidth * 24 + 31) / 32 * 4;
w = ((BITMAPINFO*)(rgb + sizeof(BITMAPFILEHEADER)))->bmiHeader.biWidth / 8 * 8;
h = ((BITMAPINFO*)(rgb + sizeof(BITMAPFILEHEADER)))->bmiHeader.biHeight;
buf_c = (BYTE*)malloc(w*h);
buf_m = (BYTE*)malloc(w*h);
buf_y = (BYTE*)malloc(w*h);
buf_k = (BYTE*)malloc(w*h);
memset(buf_c, 0x255, w*h);
memset(buf_m, 0x255, w*h);
memset(buf_y, 0x255, w*h);
memset(buf_k, 0x255, w*h);
for (int i = h - 1; i >= 0; i--)
{
for (int j = 0; j
int allbuffsize;
int width;
TIFF* tif = TIFFOpen(path, "r");
TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &height);
TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &width);
int perlines = TIFFScanlineSize(tif);
BYTE* cmykbuf = (BYTE*)malloc(perlines*height);
for (int i = 0; i
for (int j = 0; j |