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的意思)的结果是多少,这个很简单的问题,但是能够写出解答过程的人并不 多.这个看起来和图片格式没有 ...
随机推荐
- Intent使用Parcelable传递对象
package com.pingyijinren.test; import android.os.Parcel; import android.os.Parcelable; import java.i ...
- hunnu - 11545 小明的烦恼——找路径 (最大流)
http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11545 只是要求不经过相同的边,那么每次找出一条增广路T-- ...
- nyoj_308_Substring_201405091611
Substring 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 You are given a string input. You are to ...
- 解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容
解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容 解决方案 在 Web.xml文件中 加入以下代码 <!--解决ajax Put与Del请求无法接收到传输的内容-- ...
- Python学习笔记_Python对象
Python学习笔记_Python对象 Python对象 标准类型 其它内建类型 类型对象和type类型对象 Python的Null对象None 标准类型操作符 对象值的比較 对象身份比較 布尔类型 ...
- org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected be
1.错误描写叙述 八月 14, 2015 3:03:05 下午 com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn 警告: Request ...
- Wordpress3.9开启多网站配置配置nginx进行局域网測试.
由于须要帮staff迁移一些数据, 所以想到了使用wordpress的多网站. 这个功能在wordpress3.0后就有了. 软件系统等信息: OS: linux debian wheezy php ...
- Codevs 1744 格子染色==BZOJ 1296 粉刷匠
1744 格子染色 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 有 n 条木板需要被粉 ...
- CSP 201703-4 地铁修建【最小生成树+并查集】
问题描述 试题编号: 201703-4 试题名称: 地铁修建 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 A市有n个交通枢纽,其中1号和n号非常重要,为了加强运输能力,A市 ...
- spring 之 IOC 依赖注入详解
当我们对一个javaBean进行实例化时,在原本的情况下我们会选择新建一个接口,然后进行实例化,为了进一步降低耦合度我们还会使用工厂模式进行封装. 例: 当我们想要去造,Chinese.America ...