斑马打印图片转换成十六进制指令

        /// <summary>
        /// 根据图片生成图片的ASCII 十六进制
        /// </summary>
        /// <param name="sourceBmp">原始图片</param>
        /// <param name="totalBytes">总共字节数</param>
        /// <param name="rowBytes">每行的字节数</param>
        /// <returns>ASCII 十六进制</returns>
        public static string BitmapToHex(Image sourceBmp, out int totalBytes, out int rowBytes)
        {
            // 转成单色图
            Bitmap grayBmp = ConvertToGrayscale(sourceBmp as Bitmap);
            // 锁定位图数据
            Rectangle rect = new Rectangle(0, 0, grayBmp.Width, grayBmp.Height);
            System.Drawing.Imaging.BitmapData bmpData = grayBmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, grayBmp.PixelFormat);
            // 获取位图数据第一行的起始地址
            IntPtr ptr = bmpData.Scan0;
            // 定义数组以存放位图的字节流数据
            // 处理像素宽对应的字节数,如不为8的倍数,则对最后一个字节补0
            int width = (int)Math.Ceiling(grayBmp.Width / 8.0);
            // 获取位图实际的字节宽,这个值因为要考虑4的倍数关系,可能大于width
            int stride = Math.Abs(bmpData.Stride);
            // 计算位图数据实际所占的字节数,并定义数组
            int bitmapDataLength = stride * grayBmp.Height;
            byte[] ImgData = new byte[bitmapDataLength];
            // 从位图文件复制图像数据到数组,从实际图像数据的第一行开始;因ptr指针而无需再考虑行倒序存储的处理
            System.Runtime.InteropServices.Marshal.Copy(ptr, ImgData, 0, bitmapDataLength);
            // 计算异或操作数,以处理包含图像数据但又有补0操作的那个字节
            byte mask = 0xFF;
            // 计算这个字节补0的个数
            //int offset = 8 * width - grayBmp.Width;
            int offset = 8 - (grayBmp.Width % 8);
            //offset %= 8;
            offset = offset % 8;
            // 按补0个数对0xFF做相应位数的左移位操作
            mask <<= (byte)offset;
            // 图像反色处理
            for (int j = 0; j < grayBmp.Height; j++)
            {
                for (int i = 0; i < stride; i++)
                {
                    if (i < width - 1) //无补0的图像数据
                    {
                        ImgData[j * stride + i] ^= 0xFF;
                    }
                    else if (i == width - 1) //有像素的最后一个字节,可能有补0
                    {
                        ImgData[j * stride + i] ^= mask;
                    }
                    else  //为满足行字节宽为4的倍数而最后补的字节
                    {
                        //ImgData[j * stride + i] = 0x00;
                        ImgData[j * stride + i] ^= 0x00;
                    }
                }
            }
            // 将位图数据转换为16进制的ASCII字符
            string zplString = BitConverter.ToString(ImgData);
            zplString = CompressLZ77(zplString.Replace("-", string.Empty));
            totalBytes = bitmapDataLength;
            rowBytes = stride;
            return zplString;
         }

附件下载

时间: 2024-12-21 21:19:56

斑马打印图片转换成十六进制指令的相关文章

mac下如何将图片转换成PDF格式?

图片的格式有很多中,PDF也是经常使用的一种,那么如何将图片转换成PDF格式?除了可以通过软件进行转换格式之外,通过电脑的基本操作也是可以实现的!小编总结了具体的操作步骤,简单的计步就可以将您手中的图片转换成PDF格式,下面就和小编一起来看看具体是如何操作的吧! 将图片转换成PDF格式步骤: 第一步:选中你所有需要的图片 第二步:在编辑选项里面选择"全选" 第三步:选择"打印" 第四步:选择"储存为PDF

怎么把图片转换成PDF文件格式

有很多人问我为什么要把图片转换PDF文件呢?PDF文件是以PostScript语音图像模型为基础的,无论在哪种打印机上都可以保证其精确的颜色和准确的打印效果.并且可以再现原稿的每一个字符,颜色,以及图像.这也就是为什么需要转换的原因,那如何去操作这一转换呢,请跟着小编一起看下方的操作.操作工具:[迅捷PDF转换器]步骤一:打开浏览器,进入百度首页,搜索迅捷PDF在线转换器.步骤二:进入转换器界面后,在导航栏上方选择文档转换,选择后会出现下拉框,在下拉框中找到图片转PDF.步骤三:点进图片转PDF

照片转成pdf 如何把jpg图片转换成pdf格式

大家不知道还记不记得,那句台词"好男人就是我,我就是xxx"曾小贤.没错就是他<爱情公寓>毫无疑问近几年比较有特点的喜剧了,而且每个人都在盼望着第五季.尤其是到第四部结尾的时候,大家都希望曾小贤能和一菲在一起,在这时候它结束了,我们都幻想着爱情公寓第五季,可是迟迟没有音信.大家依然还记得子乔的小姨妈.楼下的小黑.婉瑜.展博. 这群年轻人跟现实生活中的我们一样,过着合租群租的生活,我们没有他们那么多的欢声笑语,可能这就是电视剧和现实差距,当我们最爱的几位主演都有了自己新的工作

怎么把图片转换成pdf jpg转pdf案例

图片有各种格式,jpg.gif.png都是我们常见的,当我们想要把图片转换成pdf时,首先要注意这些文件的格式,考虑使用的方法是否可以兼容这些图片的格式,然后再查看此种方法的图片转成pdf的效果.那么,怎么把图片转换成pdf才能保证图片内容的整洁与清晰呢?想要达到这一点,其实并不是很难! 在执行图片转换成pdf操作前,我们要在电脑上下载安装好迅捷pdf转换器,然后还需要我们将要转换的图片放在同一个文件夹中,并将文件夹放在我们可以找到的位置.      第1步:在电脑桌面上用鼠标双击软件图标打开软

OprenCV学习之路一:将彩色图片转换成灰度图

//将一张彩色图片转成灰度图: //////////////////////////// #include<cv.h> #include<cvaux.h> #include<highgui.h> #include<ml.h> #include<iostream> using namespace std; using namespace cv; int main() { IplImage *src=0; src=cvLoadImage("

java将图片转换成二进制

package com.oumyye.图片; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import sun.misc.BASE64Decoder; impor

如何将.jpg图片 转换成.eps 格式图片

在使用latex写作论文的时候,需要插入一些图片,但是往往有些图片不是eps格式的.虽然网上有如何插入jpg格式的图片方法,但是经过我实验后发现都不太管用.最后找到一个比较靠谱的方法,使用latx本身的图片转换功能.具体方法如下: 可以从MiKTex的目录下找到bmeps的应用文件.在我的电脑里路径是D:\ProText\MiKTeX\texmf\miktex\bin,是latex自己的bitmap to eps converter. 在DOS下,进入.jpg图片所在目录, 用语句bmeps 1

javascript把RGB指定颜色转换成十六进制颜色(Converting R,G,B values to HTML hex notation)

Prologue 看见一篇很好的外国文章,Making annoying rainbows in javascript,其实我当时很想把它翻译下来的,但是对于一个连六级都没过的人确实有点难度,一些文段看起来是知道意思但是就不知道怎么用自己的话来表达.越来越觉得对于IT行业来说英语至少要达到能读的程度,毕竟好的东西很多是外国的,还有哦,要会翻墙.对于那篇文章我其实还没看完,还在慢慢消化中,但是看到一个函数确实真的很吸引我,实现的是Converting R,G,B values to HTML he

[转] 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果 ---张鑫旭

by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3804 去年盛夏之时,曾写过“小tip: 使用CSS将图片转换成黑白”一文,本文的模式以及内容其实走得是类似路线.CSS3 → SVG → IE filter → canvas. 前段时间,iOS7不是瓜未熟就落地了嘛,然后捡瓜的人很多,然后国内外开始了各种探讨,从界面到动画,从兼容到实现等.其中,“毛玻璃”一次梆梆出世