C#简单的图片合成及防止并发的办法
/// <summary>
/// 合成图
/// </summary>
private string ComposeCarBrandBadImage(AnonAttachmentFilter filter)
{
filter.pageIndex = ;
filter.pageSize = ;
IList<AnonAttachment> attachmentList = B_Attachment.Instance.GetList(filter);
int height = * ((int)((attachmentList.Count + ) / ));
height = height <= ? : height;
Bitmap _newBitmap = new Bitmap(, height);
//_newBitmap.SetPixel(250, 300,Color.White);
Graphics _graphics = Graphics.FromImage(_newBitmap);
_graphics.Clear(Color.White);
int x = , y = ;
string path = string.Empty,copyPath=string.Empty;
List<string> pathlist = new List<string>();
for (int i = ; i < attachmentList.Count; i++)
{
x = (i + ) % == ? : ;
y = * ((int)(i / )) + ;
path = System.Web.HttpContext.Current.Server.MapPath(".." + attachmentList[i].Path);
if (!File.Exists(path)) continue;//如果文件不存在。
// 用于生成图片的拷贝,处理并发操作时导致的无法进行读写操作的问题
copyPath = path.Substring(, path.LastIndexOf("\\") + ) + Guid.NewGuid().ToString() + path.Substring(path.LastIndexOf("\\")+);
File.Copy(path, copyPath);
pathlist.Add(copyPath);
Image img = System.Drawing.Image.FromFile(copyPath);
_graphics.DrawImage(img, x, y, , );
img.Dispose();
}
if (attachmentList.Count == )
{
_newBitmap = new Bitmap(, );
//_newBitmap.SetPixel(250, 300,Color.White);
_graphics = Graphics.FromImage(_newBitmap);
_graphics.Clear(Color.White);
_graphics.DrawImage(System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath("../_theme/images/CarBad.gif")), , , , );
}
//_graphics.DrawString("文字", new Font(FontFamily.GenericSerif, 10), Brushes.Yellow, 50, 50);
_newBitmap.Save(System.Web.HttpContext.Current.Server.MapPath("../_upload/carBrandBadImg/") + filter.FromId + "/ComposeCarBrandBadImage.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
_graphics.Dispose();
foreach (string ph in pathlist)
{
File.Delete(ph);
}
return "../_upload/carBrandBadImg/" + filter.FromId + "/ComposeCarBrandBadImage.jpg";
}
C#简单的图片合成及防止并发的办法的更多相关文章
- iOS 图片水印、图片合成文字或图片实现
这个需求可能有时候会碰到,比如自己的照片加版权,打水印等 网上的方法,有不少感觉不全对,或者需求不是特全,这里我总结了3种场景下的需求: 1.本地图片合成文字 2.本地图片合成图片 3.网络图片先下载 ...
- 移动端canvas文字图片合成并生成图片(canvas宽度自适应移动端屏幕)
这是我之前做的一个关于文字图片合成的代码,供大家参考,不足支出还望体谅:具体的注释在代码里都有,有什么不懂了可以留言互相交流.<!DOCTYPE html> <html lang=& ...
- WPF 下两种图片合成或加水印的方式(转载)
来源:http://www.cnblogs.com/lxblog/ 最近项目中应用多次应用了图片合成,为了今后方便特此记下. 在WPF下有两种图片合成的方式,一种还是用原来C#提供的GDI+方式,命名 ...
- Android DIY之路 (一) 指定区域多图片合成 放大 缩小 镜像 旋转 等(转)
惯例先看效果图 // 注意做类似这种模板功能时候 方位由后台数据提供,这里我们用假数据 4个点 或者xy 加区域来做示例 //一开始我们公司用的是透明盖住 操作图片 但发现 局限性较大.后来直接限定区 ...
- ImageCombiner - Java服务端图片合成的工具包,好用!
自己的第一个也是唯一一个开源项目,因为平时比较懒,很少做宣传,今天刚好突破160个star,发到园子里推荐给大家,算是庆祝一下,哈. 项目地址:https://gitee.com/opensource ...
- C# 图片的裁剪,两个图片合成一个图片
图片的裁剪,两个图片合成一个图片(这是从网上摘的) /// <summary> /// 图片裁剪,生成新图,保存在同一目录下,名字加_new,格式1.png 新图1_ne ...
- Expression Blend4经验分享:制作一个简单的图片按钮样式
这次分享如何做一个简单的图片按钮经验 在我的个人Silverlight网页上,有个Iphone手机的效果,其中用到大量的图片按钮 http://raimon.6.gwidc.com/Iphone/de ...
- android 文字图片合成
引用:http://blog.csdn.net/cq361106306/article/details/8142526 两种方法: 1.直接在图片上写文字 String str = "PIC ...
- php 图片添加文字水印 以及 图片合成(微信快码传播)
1.图片添加文字水印: $bigImgPath = 'backgroud.png'; $img = imagecreatefromstring(file_get_contents($bigImgPat ...
随机推荐
- 51nod 1437
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1437 1437 迈克步 题目来源: CodeForces 基准时间限制: ...
- React native 开发工具 VSCode
1.VSCODE下载地址:先下载VSCode软件 2.代码提示功能: 打开 VSCode ,然后 按住键盘 command+p,然后在vscode上面输入框 输入: "ext install ...
- EF ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
今天编码过程中遇到这个问题,用EF 更新数据库,将组织好的数据传递到ef的上下文中,本以为附加上去更新,一切就ok了,不过事实证明没这么顺利 ----------------------------- ...
- hdu-2544-最短路(Bellman-Ford算法模板)
题目链接 题意很清晰,入门级题目,适合各种模板,可用dijkstra, floyd, Bellman-ford, spfa Dijkstra链接 Floyd链接 Bellman-Ford链接 SPFA ...
- Zeroc Ice 发布订阅者之demo Icestorm之clock
刚刚在服务端(192.168.0.113)和客户端跑通(192.168.0.188),在这里记录,作为备忘. 第一步:读readme,先用vs2010生成subscriber.exe和publishe ...
- Java中print()、printf()、println()的区别?
区别: 1.printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 2.print就是一般的标准输出,输入信息后不会换行 3.println输入信息会换行 参照JAVA API的定 ...
- Thinkphp 自定义404页面
一. 手册->调试->异常处理 在公共config.php 中加入: 'TMPL_EXCEPTION_FILE' => '/Public/404.html', //访问不存在的跳转 ...
- ubuntu 迁移部分 / 目录下的存储空间到 /home目录
状况:当时给系统分区的时候,home和根目录都是25GB左右,突然发现home 目录不够用了,于是决定进行将根目录的部分空间挪移到home下去 主要方法:使用Gparted的LIve USB的方法. ...
- BZOJ3110:[ZJOI2013]K大数查询(整体二分版)
浅谈离线分治算法:https://www.cnblogs.com/AKMer/p/10415556.html 题目传送门:https://lydsy.com/JudgeOnline/problem.p ...
- BZOJ2054:疯狂的馒头
浅谈并查集:https://www.cnblogs.com/AKMer/p/10360090.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php? ...