Sco*_*ain 1 c# printing bitmap
我成功地将单色位图打印到我的打印机,但是当打印项目时,图像右侧有一个大的黑色条纹.
这是原作

(扫描)打印机打印的内容

用于生成二进制blob的代码
Rectangle rect = new Rectangle(0, 0, Bitmap.Width, Bitmap.Height);
System.Drawing.Imaging.BitmapData bmpData = null;
byte[] bitVaues = null;
int stride = 0;
try
{
bmpData = Bitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, Bitmap.PixelFormat);
IntPtr ptr = bmpData.Scan0;
stride = bmpData.Stride;
int bytes = bmpData.Stride * Bitmap.Height;
bitVaues = new byte[bytes];
System.Runtime.InteropServices.Marshal.Copy(ptr, bitVaues, 0, bytes);
}
finally
{
if (bmpData != null)
Bitmap.UnlockBits(bmpData);
}
string str = String.Format("GW{0},{1},{2},{3},", X, Y, stride, Bitmap.Height);
byte[] ascii = Encoding.ASCII.GetBytes(str);
byte[] buffer = new byte[ascii.Length + bitVaues.Length + 1];
Buffer.BlockCopy(ascii, 0, buffer, 0, ascii.Length);
Buffer.BlockCopy(bitVaues, 0, buffer, ascii.Length, bitVaues.Length);
buffer[buffer.Length - 1] = (byte)'\n';
return buffer;
Run Code Online (Sandbox Code Playgroud)
我的初步理论是BMP格式是将该行添加为行尾标记,并且在渲染时不可行.我想我可能必须在我有二进制数组后重新解析文件,并在每一行的末尾取出00 00 00.但我在这里张贴以防万一有人想到更好的方式.
| 归档时间: |
|
| 查看次数: |
1258 次 |
| 最近记录: |