C# 生成 bmp 格式的图片
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Net.NetworkInformation;
using System.Runtime.ExceptionServices;
using System.Security;
using System.Threading; namespace Utility
{
/// <summary>
/// 绘制一张图片,图片内容为标题+表格数据
/// </summary>
public class CSharpDraw
{
public int _pageSize = ; //每张图片显示多少条数据
public int _picWidth = ; //图片宽度
public int _picHeight = ; //图片高度
public int _tableStartX = ; //画笔起始点相对画布的水平位置
public int _tableStartY = ; //画笔起始点相对画布的垂直位置
public string _fontStyle = "宋体"; //默认字体
public int _fontSize = ; //默认字体大小
public string _title = "公告"; //表格标题
public int _rowHeight = ; //表格行高(假设每行高度一样)
public int _columnWidth = ; //表格列宽(假设每列宽度一样)
public int _rowDataSartX = ; //表格数据相对表格的水平位置
public int _rowDataSartY = ; //表格数据相对表格的垂直位置 private void CreateTablePicture(List<Student> dataList, int startRowNo, string picSavePath)
{
int nEnd = (startRowNo + _pageSize > dataList.Count) ? dataList.Count : (startRowNo + _pageSize); //新建一个默认大小的图片
Bitmap bmp = new Bitmap(_picWidth, _picHeight);
//利用该图片对象生成画板
Graphics graphic = Graphics.FromImage(bmp);
//设置黑色背景
graphic.Clear(Color.Black); //画刷用来绘制表格线条,画笔用来绘制文字内容
//新建一个画刷
SolidBrush brush = new SolidBrush(Color.Red);
//定义一个红色、线条宽度为1的画笔
Pen pen = new Pen(Color.Red, );
//设置内容字体
Font font = new Font(_fontStyle, _fontSize); //绘制表格标题
graphic.DrawString(_title, font, brush, _tableStartX, _tableStartY); int row = ;
string studentName = string.Empty; //画表格并添加显示文字内容
for (int i = startRowNo; i < nEnd; i++)
{
//当前绘制行号
row = i - startRowNo; //绘制表格第一列,在画板上画矩形
_tableStartX = ;
_tableStartY = _rowDataSartX + _rowHeight * row;
graphic.DrawRectangle(pen, _tableStartX, _tableStartY, _columnWidth, _rowHeight);
//填充表格内容(第一列)
_tableStartX = ;
_tableStartY = _rowDataSartX + _rowHeight * row;
studentName = dataList[i].StudentName.Length < ? dataList[i].StudentName : (dataList[i].StudentName.Substring(, ) + "..");
graphic.DrawString(studentName, font, brush, _tableStartX, _tableStartY); //绘制第二列,在画板上画矩形
_tableStartX += _columnWidth;
graphic.DrawRectangle(pen, _tableStartX, _tableStartY, _columnWidth, _rowHeight);
//填充表格内容(第二列)
_tableStartX += _columnWidth;
graphic.DrawString(dataList[i].Count.ToString(), font, brush, _tableStartX, _tableStartY);
} //释放资源
graphic.Dispose();
//注意:程序要有该目录下该文件的访问权限
bmp.Save(picSavePath, ImageFormat.Bmp);
} public List<string> ManagePictureGenerate(List<Student> dataList, string picPath)
{
List<string> templist = new List<string>(); string strPicPath = string.Empty;
int page = (int)Math.Ceiling((double)dataList.Count / _perPageCount);
for (int i = ; i < page; i++)
{
strPicPath = string.Format("{0}\\{1}{2}.bmp", picPath, DateTime.Now.ToString("HHmmss"), i);//采用公共的绘图方法
SaveDrawPicForPosition(dataList, _perPageCount * i, strPicPath, picType); tempList.Add(strPicPath);
} return lst;
} public bool PingIp()
{
Ping pingSender = new Ping();
PingReply reply = pingSender.Send("127.0.0.1", );//第一个参数为ip地址,第二个参数为ping的时间
if (reply.Status == IPStatus.Success)
{
return true;
}
else
{
return false;
}
}
}
}
using System.IO;
using System.Windows.Media.Imaging; namespace Utility
{
public class ImageHelper
{
public static BitmapImage StreamBitmapImage(Stream stream)
{
BitmapImage bmp = null;
try
{
bmp = new BitmapImage();
bmp.BeginInit();
bmp.StreamSource = stream;
bmp.EndInit();
}
catch
{
bmp = null;
}
return bmp;
} /// <summary>
/// byte[]转换为BitmapImage
/// </summary>
/// <param name="byteArray"></param>
/// <returns></returns>
public static BitmapImage ByteArrayToBitmapImage(byte[] byteArray)
{
BitmapImage bmp = null;
try
{
bmp = new BitmapImage();
bmp.BeginInit();
bmp.StreamSource = new MemoryStream(byteArray);
bmp.EndInit();
}
catch
{
bmp = null;
}
return bmp;
} /// <summary>
/// BitmapImage转换为byte[]
/// </summary>
/// <param name="bmp"></param>
/// <returns></returns>
public static byte[] BitmapImageToByteArray(BitmapImage bmp)
{
byte[] byteArray = null;
try
{
Stream sMarket = bmp.StreamSource;
if (sMarket != null && sMarket.Length > )
{
//很重要,因为Position经常位于Stream的末尾,导致下面读取到的长度为0。
sMarket.Position = ; using (BinaryReader br = new BinaryReader(sMarket))
{
byteArray = br.ReadBytes((int)sMarket.Length);
}
}
}
catch
{
//other exception handling
}
return byteArray;
}
}
}
C# 生成 bmp 格式的图片的更多相关文章
- [自制操作系统] BMP格式文件读取&图形界面系统框架/应用接口设计
本文将介绍在本人JOS中实现的简单图形界面应用程序接口,应用程序启动器,以及一些利用了图形界面的示例应用程序. 本文主要涉及以下部分: 内核/用户RW/RW调色板framebuffer共享区域 8bi ...
- 将jpg压缩成webp格式的图片
cwebp名称 cwebp -压缩图像文件为的WebP文件概要 cwebp [选项] INPUT_FILE -o output_file.webp描述 cwebp压缩使用的WebP格式的图像.输入格式 ...
- VS2015上OpenCV-2.4.13安装与Hi35xx .jpg/.bmp格式转.bgr格式开发
因为Hi3559AV100后期深度学习开发需要用到.bgr格式的图片,而目前在手的一般为.jpg或.bmp格式的图片,下面随笔将给出基于OpenCV-2.4.13的格式转换,实现Hi35xx .jpg ...
- 图片bmp格式转换为jpg格式
一下代码经过个人测试,可用 注意:将jpg格式的图片重命名为bmp格式,在该代码中是不能转换的,会报空值异常!而且IE10是显示不了这样的图片的 import java.awt.Image; impo ...
- c#图片生成png格式和原图不同
下面这种,会生成和原图类似的图片,png格式的图片该是空的地方仍旧是空的
- Bmp格式图片与16进制的互相转换简解 Python
BMP TO HEX 首先介绍Github上一个简单的Bmp转成16进制的py: https://github.com/robertgallup/bmp2hex 网上这种例子很多.思路也简单:将bmp ...
- C# 生成 DataMatrix 格式的二维码
该文主要是利用OnBarcode.dll 生成 DataMatrix 格式的二维码的一些简单方法和操作技巧.关于QrBarcode的二维码比较常见和简单,网上有很多资源. 1.附件为dll 2.利用上 ...
- 一般源码安装添加的GD库 是不支持 jpeg 格式的图片的
一般源码安装添加的GD库 是不支持 jpeg 格式的图片的,只支持如下格式 GD Support enabled GD Version bundled (2.0.34 compatible) GIF ...
- 你所能用到的BMP格式介绍
原理篇: 一.编码的意义. 让我们从一个简单的问题开始,-2&-255(中间的操作符表示and的意思)的结果是多少,这个很简单的问题,但是能够写出解答过程的人并不 多.这个看起来和图片格式没有 ...
随机推荐
- 在子线程中更新UI,只能使用Handler
package com.pingyijinren.test; import android.os.Handler; import android.os.Message; import android. ...
- Codeforces 628F Bear and Fair Set
题意: 给定若干个上限upto以及集合中在[1,upto]中的元素个数,问是否存在这样的集合使得集合中的元素除以5的余数的个数相等. 分析: 首先可以想到区间的数与其除以5的余数和区间编号分别一一对应 ...
- 测试使用markdonw写博客
# 欢迎使用 Cmd Markdown 编辑阅读器 ------ 我们理解您需要更便捷更高效的工具记录思想,整理笔记.知识,并将其中承载的价值传播给他人,**Cmd Markdown** 是我们给出的 ...
- Python标准库:内置函数tuple([iterable])
本函数实现从可迭代对象生成一个元组对象返回.元组对象是一个不可改动的列表对象. 样例: #tuple() print(tuple([1, 2, 3])) print(tuple((1, 2, 3))) ...
- angularJS 系列(七)
In AngularJS 1.3+, there is One-time binding built-in: The main purpose of one-time binding expressi ...
- CentOS 7最小安装后,手动连接网络
时间:2015-12-12 00:53来源:blog.51cto.com 作者:XD 举报 点击:3679次 CentOS中最小安装,由于默认的网卡没有激活,所以无法连接到网络. 设置如下: sucd ...
- SSD硬盘安装系统后要做的事
1***cmd>fsutil behavior query DisableDeleteNotify 0如果返回值是0,则代表TRIM处于开启状态:反之如果返回值是1,则代表TRIM处于关闭状态2 ...
- FaceBook开源库Fresco
讨论学习使用 关于 Fresco Fresco 是一个强大的图片载入组件. Fresco 中设计有一个叫做 image pipeline 的模块.它负责从网络.从本地文件系统.本地资源载入图片. 为了 ...
- HDU 1542 Atlantis (线段树 + 扫描线 + 离散化)
Atlantis Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- HTML5+CSS3设计界面
近期在做一个关于房屋装修的手机上的项目,前台是用H5+C3完毕的,挂在微信上.全部相对来说不是非常难. 这段时间通过敲Html5+Css3.分享一些自己觉得值得学习的知识. 都非常easy.自己操作一 ...