C# web 服务端图片翻转 保存 请教

bustersword 2011-01-31 11:53:48
获取图片bitmap,怎么处理翻转,然后保存呢
...全文
374 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
bustersword 2011-02-04
  • 打赏
  • 举报
回复
感谢各位的回答,来结贴了,我要的是服务端的,给位会带都有帮助,我就加了个随机数
wuyq11 2011-01-31
  • 打赏
  • 举报
回复
Graphics.TranslateTransform
string filePath =@"C:\a.jpg";
using (Bitmap bm = new Bitmap(500,500))
{
using (Graphics g = Graphics.FromImage(bm))
{
g.Clear(Color.Wheat);
g.TranslateTransform(0, 0, MatrixOrder.Prepend);
g.RotateTransform(45);
FontFamily ff = new FontFamily("宋体");
Font f =new Font(ff,10);
Brush b = new SolidBrush(Color.Black);
StringFormat sf = new StringFormat();
g.DrawString("", f, b, new PointF(10, 10), sf);
g.DrawString("", f, b, new PointF(10, 10 + 30 + 10), sf);
}
bm.Save(filePath, ImageFormat.Jpeg);
}
http://topic.csdn.net/u/20100830/12/85057b20-457c-42b5-81a3-e564072a8fcd.html
colorall 2011-01-31
  • 打赏
  • 举报
回复
LZ是要服务端还是客户端
服务端:image.RotateFlip(RotateFlipType.Rotate90FlipX);
客户端:滤镜filter,似乎IE支持
wuyq11 2011-01-31
  • 打赏
  • 举报
回复
Canvas
http://www.1lou.net/school/Javascript/0513143H010.html
<script type="text/javascript">
function rotateImage(HTMLControlID,degree) {
if(window.navigator.userAgent.indexOf('MSIE') > -1)
{
//处理IE浏览器
var imageToRotate = document.getElementById(HTMLControlID);

imageToRotate.style.filter= "progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand')";
var deg2radians = Math.PI * 2 / 360;
var degreeToRotate =degree // 旋转度数;
rad = degreeToRotate * deg2radians ;
costheta = Math.cos(rad);
sintheta = Math.sin(rad);

imageToRotate.filters.item(0).M11 = costheta;
imageToRotate.filters.item(0).M12 = -sintheta;
imageToRotate.filters.item(0).M21 = sintheta;
imageToRotate.filters.item(0).M22 = costheta;

var w=document.getElementById(HTMLControlID).width;
var h=document.getElementById(HTMLControlID).height;

document.getElementById(HTMLControlID).width=h;
document.getElementById(HTMLControlID).height=w;
n+=1;
if(n<2)
{
rotateImage(HTMLControlID,degree);
}
else
{
n=0;
}

}
}
</script>
wuyq11 2011-01-31
  • 打赏
  • 举报
回复
UpdateMode="Conditional"
?="+DateTime.Now
bustersword 2011-01-31
  • 打赏
  • 举报
回复
[讨论]updatepanel中image图片更新问题

情况如下:
updatepanel 中有一个asp:Image控件,页面加载时,就设置了该Image.Imageurl = "a.jpg"。

现在其他程序修改了图片a.jpg的内容,并不改变文件名和文件路径。然而Image中显示的图片仍然是原来未改过的a.jpg样子。

重新赋值Image.Imageurl = "a.jpg"也不管用。

手动点刷新整个网页也没用。非要关了浏览器重新打开才显示修改后的结果。

请问该如何解决?
你UpdatePanel的trigger写了没啊!还有如果你要修改图片的话!应该要将图片上传的时候获取路径啊!然后在将你新上传的这张图片保存。然后在页面显示!
引用 2 楼 huminghua 的回复:
...应该要将图片上传的时候获取路径啊!然后在将你新上传的这张图片保存。然后在页面显示!

没有用过,帮顶
个人感觉应该是页面缓存的问题,但是不知如何解决。
涉及到页的生命周期! 还有updatepanel 局部刷新
不知道你具体是怎么写的
引用 6 楼 wapdos 的回复:
涉及到页的! 还有updatepanel 局部刷新
不知道你具体是怎么写的

高手今天都不在线?
还是自己解决了,加随机数搞定。

唉。。。。。无语得很,结贴结贴。
想要分直接帮顶就完了么,写些不着边际莫名其妙的话,唉。。。。
我很 淡定..............................

这是我网上找的,和我很像,希望有人知道怎么弄
jianshao810 2011-01-31
  • 打赏
  • 举报
回复
自己写 ajax,其实可以传到 ashx 文件,然后输出图片,或者传到 一个 页面,那个页面是写出图片,像验证码。。

private void CreateCheckCodeImage(string checkCode)
{
if (checkCode == null || checkCode.Trim() == String.Empty)
return;

System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 18.5)), 22);
Graphics g = Graphics.FromImage(image);

try
{
//生成随机生成器
Random random = new Random();

//清空图片背景色
g.Clear(Color.White);

//画图片的背景噪音线
for (int i = 0; i < 5; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);

g.DrawLine(new Pen(Color.Aqua), x1, y1, x2, y2);
}
// checkCode = checkCode.inse
//华文宋体 Times New Roman
Font font = new System.Drawing.Font("Times New Roman", 15, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(checkCode, font, brush,8, 2);

//画图片的前景噪音点
for (int i = 0; i < 10; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);

image.SetPixel(x, y, Color.FromArgb(random.Next()));
}

//画图片的边框线
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);

System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
ms.Close();
ms = null;
}
finally
{
g.Dispose();
image.Dispose();
}
}
bustersword 2011-01-31
  • 打赏
  • 举报
回复
感谢回答,我现在的问题又来了,image控件放在updatepanel里面,翻转图片没有局部刷新,很奇怪,我按钮事件里重新赋值imageurl了,怎么没用呢
难道这两控件不兼容?
zjj0440 2011-01-31
  • 打赏
  • 举报
回复
可以取得每个象素的x,y坐标,然后调换...
bustersword 2011-01-31
  • 打赏
  • 举报
回复
http://localhost:19344/IMPSystem.WebUI/BusinessCardPicture/CardTest/20110128/Task001/aaa-003.jpg
请问,我要得到这样的地址,该怎么写
bustersword 2011-01-31
  • 打赏
  • 举报
回复
楼上的可以在浏览器里执行吗
源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 ### Home Bus 协议概述 Home Bus协议,亦被称为家庭总线协议,是由日本研发的一种专门应用于家庭自动化领域的通信标准。该协议在商用空调及其他家用电器的远程操控方面具备广泛的应用范围。借助Home Bus协议,设备之间能够达成高效的通信,使用户能够更加便利地监管家庭中的各类智能设备。 ### ECHONET协议及其背景 Home Bus协议与ECHONET协议存在紧密的联系,实际上,ECHONET代表了一种更为具体的技术规范,其目的在于为家庭自动化领域构建一个开放且统一的通信标准。ECHONET由ECHONET财团负责维护与支持,该组织致力于推动该协议的进步与标准化进程。ECHONET协议的应用范围不仅限于家庭环境,还包括了楼宇自动化以及工业自动化等多个领域。 #### ECHONET的历史版本及修订记录 - **Version 1.0**:发布于2000年3月18日,同年7月对联盟成员公开,最终于同年对公众发布。 - **Version 1.01**:在2001年5月23日,向联盟成员发布,主要进行了补充和勘误工作。 - **Version 2.00**:2001年8月7日,针对联盟成员发布。此版本中将电源线A和电源线B两种方式合并为单一电源线方式(基于电源线A),并对相关描述进行了调整。 - **Version 2.01**:2001年11月9日,进行了一些必要的修正,包括排版错误的修正、术语的标准化等。 - **Version 2.10**:经历预览版和草案阶段后,于2002年3月7日正式对联盟成员开放。此次更新主要涉及第3部分关于状态转换的描述修改。 -...
源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 依据所提供的文档材料,可以归纳出以下核心知识点: 1. **TM1668控制器**:TM1668属于一种专为驱动LED显示屏设计的专用驱动集成电路,其特别适用于驱动数码管,能够达成多路LED的驱动与控制,从而提升了显示的效率。 2. **程序简化与时序控制**:程序完成了对TM1668芯片的操作,其功能已经达到最简化程度,且时序设置正确无误。在编程过程中,确保时序的准确性至关重要,因为它直接关联到设备能否正常运作。 3. **寄存器操作**:在编程实践中,运用了 uchar、int 等数据类型来表示数据及控制位。uchar或许是一种8位无符号字符类型,用于存储数据信息。同时,还涉及到对特定位的操作,比如 & 、 >> 等,这些操作用于设定或检测数据位的状态。 4. **硬件控制位**:在代码中,设定了用于控制TM1668的硬件控制位,涵盖 STB(片选信号)、CLK(时钟信号)以及 DIO(数据输入输出信号)。这些控制位的作用在于向TM1668发送指令与数据信息。 5. **数码管显示控制**:借助一系列的 send_data 函数调用,向TM1668发送控制指令与数据,以此来调控数码管的显示状态。例如,设定显示位、挑选显示地址、将数据传输至特定的数码管显示单元等。 6. **定时器中断**:在程序设计中,应用了定时器中断(INT0_timer)来周期性地执行任务。通过设定定时器的初始值(TH0和TL0),定时器在倒计时完成后会触发中断,使得程序能够以固定的频率更新数码管的显示内容。 7. **中断服务程序**:设定了一个中断服务程序,在定时器中断发生时被调用。在中断服务程序...
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 在信息技术领域中,DM码(Data Matrix Code)被视为一种二维条形码规范,其功能在于储存海量信息,并在工业自动化、电子元件标记等众多场景中得到普遍应用。DM码的辨识过程是图像处理及计算机视觉学科内的核心研究方向,它涵盖了图像采集、初步处理、特征提取以及模板比对等多个环节。在VC++平台之上,借助MFC(Microsoft Foundation Classes)库开展DM码辨识能够构建一个高效的应用开发环境。 我们将探讨"自适应阈值分割"这一流程。在DM码辨识的进程中,图像的初步处理扮演着至关重要的角色,而阈值分割则是将图像实现二值化的常用手段。自适应阈值分割能够依据图像的局部属性灵活设定阈值,有效处理光照不均、对比度较低等情况。这通常涉及到计算每个像素点邻近区域内的平均灰度级别,并设定一个阈值,通过像素点自身的灰度值与其邻近区域灰度值的关联来判定其最终呈现的黑白状态。这样的方法能够确保DM码在复杂的图像背景下依然能够被精确地辨识出来。 随后,"快速定位"技术也是DM码辨识过程中的关键环节。在图像经过二值化处理后,需要迅速识别出DM码所在的位置。一种常用的方法是进行边缘检测,例如采用Canny算子或Sobel算子,这些方法能够识别出图像中的轮廓线。然后,借助矩形模板匹配,例如通过霍夫变换探测直线,并结合交点信息来确定DM码的四个顶点,从而精确获取DM码的位置信息。 在MFC框架的支持下,我们可以运用其图形设备接口(GDI+)以及OpenCV等库来实现上述功能。GDI+提供了丰富的绘图工具,能够便捷地处理图像的显示和初步处理;而OpenCV则包含了大量的图像处理算法,...
标题SpringBoot博物馆综合服务管理系统的设计与实现AI更换标题第1章引言介绍博物馆综合服务管理系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述博物馆信息化管理的必要性和系统开发的重要性。1.2国内外研究现状分析国内外博物馆管理系统的研究现状与存在的不足。1.3研究方法以及创新点概述本文的研究方法,并指出系统的创新之处。第2章相关理论介绍系统开发所需的相关技术理论。2.1SpringBoot框架介绍阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.2数据库技术介绍系统所采用的数据库技术,如MySQL等。2.3Web开发技术概述Web开发技术,包括前端和后端技术。2.4系统安全技术介绍系统安全相关的技术,如数据加密、用户认证等。第3章系统需求分析与设计详细分析系统的需求,并给出系统的设计方案。3.1系统需求分析从功能需求、性能需求等方面对系统进行详细分析。3.2系统架构设计给出系统的总体架构设计,包括各个模块的功能划分。3.3数据库设计设计系统的数据库结构,包括表结构、字段设计等。3.4界面设计展示系统的用户界面设计,包括页面布局、交互设计等。第4章系统实现详细介绍系统的实现过程,包括各个模块的实现方法。4.1系统开发环境搭建介绍系统开发所需的软件、硬件环境及其配置方法。4.2核心功能模块实现详细介绍系统核心功能模块的实现代码和逻辑。4.3系统集成与测试阐述系统各个模块的集成方法以及系统测试的过程和结果。第5章系统应用与效果评估介绍系统的应用情况,并对系统的效果进行评估。5.1系统应用情况系统在博物馆中的实际应用情况。5.2系统效果评估从性能、用户满意度等方面对系统效果进行评估。5.3对比方法分析通过与其他系统对比,分析本系统的优势和不足。第6章结论与展望总结本文的研究成果,并展望未来的研究方向。6.1研究结论概括本文的主要研

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧