如何显示System.drawingimage.Image图像

千里之行 始于足下精诚所至 金石为开
欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 1088 人关注过本帖
标题:求助,img显示图像限制问题?
等 级:黑侠
帖 子:265
专家分:555
结帖率:100%
&&已结贴√
&&问题点数:20&&回复次数:8&&&
求助,img显示图像限制问题?
我用img装载显示图像时,为了让图像一目了然,我将尺寸太大图像按页面大小等比缩小,但现在出现一个问题就是当图像大小超过13M时加载的图像就不显示,但图像在,右击可以保存图像,是不是img显示图像有限制?哪位能帮忙解决一下!谢谢!
搜索更多相关主题的帖子:
等 级:贵宾
威 望:83
帖 子:2522
专家分:9310
对楼主的问题 很感兴趣 介意上传下代码研究一下吗?
出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
等 级:黑侠
帖 子:265
专家分:555
回复 2楼 wangnannan
程序代码:&img alt=&缩略图& id=&Img1& src=&& style=&cursor:& onload=&showImage()&/&
&&script language=&javascript& type=&text/javascript&&
&&&&&&&&function showImage()
&&&&&&&&&&&&var Wmax=document.body.scrollW
&&&&&&&&&&&&var ImgD=document.getElementById(&Img1&);
&&&&&&&&&&&&ImgD.src=&&%=ScaleGrid_Load()%&&;
&&&&&&&&&&&&if(typeof(ImgD)== &object&)
&&&&&&&&&&&&{&&&//判断ImgD装载过后是否为对象,防止异常操作
&&&&&&&&&&&&&&& var&&&widthL=<font color=#;
&&&&&&&&&&&&&&& var&&&heightL=<font color=#;
&&&&&&&&&&&&&&& var&&&W=ImgD.
&&&&&&&&&&&&&&& var&&&H=ImgD.
&&&&&&&&&&&&&&& if(W&Wmax)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&widthL=W
&&&&&&&&&&&&&&&&&&&&heightL=(H+<font color=#)/((W+<font color=#)/Wmax); //<font color=#是因为IE方式的默认边距
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& else
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&return ;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& if(widthL!=<font color=#&&heightL!=<font color=#)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&ImgD.style.width=widthL+&px&;
&&&&&&&&&&&&&&&&&&&&ImgD.style.height=heightL+&px&;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& else
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&setTimeout( &showImage()&, <font color=#);&&&//&&&判断图片是否装载完成,只有在装载完成后才能取到宽高值
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}
&&&&&&&&&&&&else
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& return; //alert( &系统错误 &);
&&&&&&&&&&&&}
用上面的方法可以实现图像比较小的图像显示,但超过了13M就不显示了!!
并且显示效果也不理想,比较卡!!
你有什么好点的方法来实现图像的缩略图快速显示吗?还望赐教!!
[ 本帖最后由 cccool 于
17:47 编辑 ]
[fly]让心情飞一会[/fly]
等 级:黑侠
帖 子:265
专家分:555
来人解惑啊!!
[fly]让心情飞一会[/fly]
等 级:贵宾
威 望:83
帖 子:2522
专家分:9310
&&得分:20&
ScaleGrid_Load()代码能否贴出来?
恩 现有其他解决办法如下程序代码:现在有几种方法实现
<font color=#& Image imge = Image.FromFile(file.FullName);
&&this.imageList1.Images.Add(imge.GetThumbnailImage(<font color=#,<font color=#,null,IntPtr.Zero))
&&item.ImageIndex = this.imageList1.Images.Count - <font color=#;
<font color=#&public Image MakeThumbnail(string originalImagePath, int width, int height, string mode)
&&System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
&&int towidth =
&&int toheight =
&&int x = <font color=#;
&&int y = <font color=#;
&&int ow = originalImage.W
&&int oh = originalImage.H
&&switch (mode)
&&case &HW&://指定高宽缩放(可能变形)&&
&&case &W&://指定宽,高按比例&&
&&toheight = originalImage.Height * width / originalImage.W
&&case &H&://指定高,宽按比例
&&towidth = originalImage.Width * height / originalImage.H
&&case &Cut&://指定高宽裁减(不变形)&&
&&if ((double)originalImage.Width / (double)originalImage.Height & (double)towidth / (double)toheight)
&&oh = originalImage.H
&&ow = originalImage.Height * towidth /
&&y = <font color=#;
&&x = (originalImage.Width - ow) / <font color=#;
&&ow = originalImage.W
&&oh = originalImage.Width * height /
&&x = <font color=#;
&&y = (originalImage.Height - oh) / <font color=#;
&&default:
&&//新建一个bmp图片
&&System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
&&//新建一个画板
&&System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
&&//设置高质量插值法
&&g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.H
&&//设置高质量,低速度呈现平滑程度
&&g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQ
&&//清空画布并以透明背景色填充
&&g.Clear(System.Drawing.Color.Transparent);
&&//在指定位置并且按指定大小绘制原图片的指定部分
&&g.DrawImage(originalImage, new System.Drawing.Rectangle(<font color=#, <font color=#, towidth, toheight),
&&new System.Drawing.Rectangle(x, y, ow, oh),
&&System.Drawing.GraphicsUnit.Pixel);
&&return (Image)bitmap.Clone();
&&catch (System.Exception e)
&&originalImage.Dispose();
&&bitmap.Dispose();
&&g.Dispose();
<font color=#& [DllImport(&gdi32.dll&, EntryPoint = &FindWindow&)]
&&private static extern GpStatus GdiplusStartup(long token, string lpWindowName, GdiplusStartupInput inputbuf, ref long outputbuf);
&&[DllImport(&gdi32.dll&, EntryPoint = &FindWindow&)]
&&private static extern GpStatus GdiplusShutdown(long token);
&&[DllImport(&gdi32.dll&, EntryPoint = &FindWindow&)]
&&private static extern GpStatus GdipDrawImageRect(long graphics, long image, int X, int Y, int Width, int Height);
&&[DllImport(&gdi32.dll&, EntryPoint = &FindWindow&)]
&&private static extern GpStatus GdipCreateFromHDC(long hDC, long graphics);
&&[DllImport(&gdi32.dll&, EntryPoint = &FindWindow&)]
&&private static extern GpStatus GdipDeleteGraphics(long graphics);
&&[DllImport(&gdi32.dll&, EntryPoint = &FindWindow&)]
&&private static extern GpStatus GdipLoadImageFromFile(string filename, long image);
&&[DllImport(&gdi32.dll&, EntryPoint = &FindWindow&)]
另外缩略图水印组件wsImage3.5 也不错
例如程序代码: <font color=#、在aspx文件加上aspcompat=true
&%@ Page language=&c#& Codebehind=&AddProduct.aspx.cs& AutoEventWireup=&false& Inherits=&Techsun.XYD.AdminOfXYD.AddProduct& aspcompat=true%&
<font color=#、在vs里引用com组件wsImage.dll
<font color=#、生成缩略图
wsImage.Resize obj = (wsImage.Resize)Server.CreateObject(&wsImage.Resize&);
string FilePath = Server.MapPath(&<font color=#.jpg&);
string strOutputPic = Server.MapPath(&<font color=#_s.jpg&);
int w = <font color=#;
int h = <font color=#;
int lngType = <font color=#;
obj.LoadSoucePic(FilePath);
obj.Quality = <font color=#;
obj.OutputSpic(strOutputPic,w,h,lngType);
obj.Free();
出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
等 级:侠之大者
帖 子:137
专家分:476
老大你用的是C#写的,人家能懂吗?
等 级:黑侠
帖 子:265
专家分:555
回复 5楼 wangnannan
谢谢你的解答!
ScaleGrid_Load()只是又后台返回加载图片的路径,没什么代码。
我现在也是用的第二种方法生成缩略图,然后显示时ScaleGrid_Load()返回缩略图的路径,能有达到不错的效果。
但现在又出了个新问题:
&&&&&& 用方法二生成缩略图时,当原始图像很大时会提示内存不足,查询了一下,网上说一般不会出现内存不足的问题,肯定是程序有问题,可能导致了内存泄露。
你再帮忙看看问题出在哪?有什么办法能解决,再次感谢!
附件: 您没有浏览附件的权限,请
[fly]让心情飞一会[/fly]
等 级:贵宾
威 望:83
帖 子:2522
专家分:9310
OutOfMemoryException 异常 个人认为有三种情况
1)是不是图像格式不正确?
2)打开了不是图像的文件而引发的异常
3)如果 GDI+ 不支持文件的像素格式,则此方法将引发 OutOfMemoryException 异常
个人理解 会不会是.Net 2.0环境对内存管理造成的,因为当回收内存的时候,就一切正常了,当内存到达一个相对峰值时,应用程序对单个对象占用内存的大小就有限制了呢。会不会这个图片在小一点点就没有问题了。
出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
等 级:黑侠
帖 子:265
专家分:555
回复 8楼 wangnannan
楼主很厉害!
我查了一下也就这几个原因
但是我的原始图像是以二进制方式存储在SQL数据库中的,存储时记录了图像的格式的。
所以1,2两种情况不会发生。
但3的情况我不是很理解,你能详细介绍下吗?有没有可能是3的情况导致的,
还有就是我在vs下调试刚开始一段时间还行,没出这种错误,当我发布后就出现这种错误了,然后再回到vs下调试也出现这种错误,很是纳闷!
以后要向你学习,多多请教了!
[fly]让心情飞一会[/fly]
版权所有,并保留所有权利。
Powered by , Processed in 0.026104 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved> 博客详情
C#显示url图片 webtech 发表于
16:48:00 private&void&GetUrlImage(string&url) &&&&&&&&{& &&&&&&&&&&&&WebClient&client&=&new&WebClient(); &&&&&&&&&&&&client.OpenReadCompleted&+=new&OpenReadCompletedEventHandler(client_OpenReadCompleted); &&&&&&&&&&&&client.OpenReadAsync(new&Uri(url)); &&&&&&&&} &&&&&&&&void&client_OpenReadCompleted(object&sender,&OpenReadCompletedEventArgs&e) &&&&&&&&{ &&&&&&&&&&&&Stream&stream&=&e.R &&&&&&&&&&&&this.pictureBox1.Image=&Image.FromStream(stream);& &&&&&&&&} &
C#下载图片修改后显示
& using System.N using System.D
//1、将原始图片下载下来: string url = ""; WebClient myWebClient = new WebClient(); myWebClient.DownloadFile(url,"C:\\temp\\feature-back-cnet.png");&
System.Drawing.Image image = System.Drawing.Image.FromFile("C:\\temp\\feature-back-cnet.png"); Bitmap bmp = new Bitmap(image,new Size(100,100));
//2.将新图片保存到 C:\temp\newPic.png bmp.Save("C:\\temp\\newPic.png",System.Drawing.Imaging.ImageFormat.Png);
Image1.ImageUrl = "C:\\temp\\newPic.png";
人打赏支持
码字总数 1875
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区System.Drawing.Image&类
一个抽象基类,提供了用于功能&&和&&继承的类。
命名空间:&&&
程序集:&&System.Drawing(System.Drawing.dll
&&&&System.Drawing.Image
采用属性和方法:
获取特性的像素数据的这标志&Image。
获取表示在此帧的维数的 Guid 的数组,&Image。
获取的高度,以像素为单位,这&Image。
获取以每英寸的像素为单位的水平分辨率&Image。
获取此图像的宽度和高度。
获取此像素格式&Image。
获取此文件格式&Image。
获取此图像的宽度和高度(以像素为单位)。
获取或设置提供有关图像的附加数据的对象。
获取以每英寸的像素为单位的垂直分辨率&Image。
获取的宽度,以像素为单位,这&Image。
创建&Image&从指定的文件。
创建&Image&从指定的文件使用嵌入的颜色管理信息在该文件中。
GDI 位图的句柄。
GDI 位图和 GDI 调色板的句柄的句柄。
创建&Image&从指定的数据流。
创建&Image&从指定的数据流(可选)
使用嵌入的颜色管理信息该流中。
创建&Image&从指定的数据流(可选)
使用嵌入的颜色管理信息并验证图像数据。
使用指定的编码器和图像编码器参数,将该图像保存到指定的流。
将此图像以指定的格式保存到指定的流中。
这会将保存&Image&写入指定的文件或流。
这会将保存&Image&写入指定的文件,使用指定的编码器和图像编码器参数。
这会将保存&Image&写入指定的文件中指定的格式。
将帧添加到上次对&&方法调用时所指定的文件或流中。&使用此方法将多帧图像中的选定帧保存到另一个多帧图像。
将帧添加到上次对&&方法调用时所指定的文件或流中。
/zh-cn/library/system.drawing.image.aspx
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。读取网络上的图片转成Image问题-asp.net-电脑编程网读取网络上的图片转成Image问题作者:zhengfujie 和相关&&C# code
Stream stream =
StreamReader reader =
MemoryStream ms =
HttpWebResponse webResponse =
WebRequest webRequest = HttpWebRequest.Create(&/img/13/1213.jpg&);
//打开图片地址
webResponse = (HttpWebResponse)webRequest.GetResponse();
stream = webResponse.GetResponseStream();
reader = new StreamReader(stream);
string textContent = reader.ReadToEnd();
byte[] bytes = System.Text.Encoding.Default.GetBytes(textContent);
ms = new MemoryStream(bytes);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
[color=#FF0000] ms参数无效[/color]
//记录是否是图片个格式
bool imgState =
if (img.RawFormat == ImageFormat.Gif)
imgState =
if (img.RawFormat == ImageFormat.Jpeg)
imgState =
if (img.RawFormat == ImageFormat.Png)
imgState =
if (imgState)
imgHeight = img.H
imgWidth = img.W
imgSize = int.Parse(img.Size.ToString());
= getMd5Hash(textContent);
if (ImagesManager.GetImgMarkIsExits())
message = &该图片已经存在!&;
message = &该URL地址的目标不是图片&;
catch (Exception ex)
message = ex.M
message = &图片上传操作异常&;
webResponse.Close();
stream.Dispose();
stream.Close();
reader.Dispose();
reader.Close();
ms.Dispose();
ms.Close();
byte[] bytes = System.Text.Encoding.Default.GetBytes(textContent);&
ms = new MemoryStream(bytes);&
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);报错:ms参数无效。不知道什么原因我之前用FileUpload上传的图片也是用这段代码就没问题。------回答---------------其他回答(1分)---------废话啊& &
你获取过来的就是字节数组 干嘛要转换为文字?&& stream = webResponse.GetResponseStream();&MemoryStream ms = new MemoryStream(stream );System.Drawing.Image img = System.Drawing.Image.FromStream(ms);------其他回答(1分)---------新建的web技术交流群,欢迎大家加入一起讨论:群号:------其他回答(1分)---------引用 2 楼 zhengfujie 的回复:文字我是用来MD5的,以免以后在网络上下载相同的图片。首先你要搞清楚服务端返回的是什么?!如果是图片的话就用1楼的方法就可以了如果是你自己定义的其他什么内容,你就应该将图片数据部分解析出来再转化------其他回答(36分)---------stream = webResponse.GetResponseStream();&
reader = new StreamReader(stream);&
[color=#FF0000] string textContent = reader.ReadToEnd();[/color这里数据就错误了。 你不能把byte[]直接转换为字符串直接修改成byte[] bytes = new System.Net.WebClient().DownloadData(“/img/13/1213.jpg”);
------其他回答(1分)---------up回复内容太短了!------回答---------------其他回答(1分)---------废话啊&
你获取过来的就是字节数组 干嘛要转换为文字? && stream = webResponse.GetResponseStream(); &MemoryStream ms = new MemoryStream(stream );System.Drawing.Image img = System.Drawing.Image.FromStream(ms);------其他回答(1分)---------新建的web技术交流群,欢迎大家加入一起讨论:群号:------其他回答(1分)---------引用 2 楼 zhengfujie 的回复:文字我是用来MD5的,以免以后在网络上下载相同的图片。首先你要搞清楚服务端返回的是什么?!如果是图片的话就用1楼的方法就可以了如果是你自己定义的其他什么内容,你就应该将图片数据部分解析出来再转化------其他回答(36分)---------
stream = webResponse.GetResponseStream(); &
reader = new StreamReader(stream); &
[color=#FF0000] string textContent = reader.ReadToEnd();[/color这里数据就错误了。 你不能把byte[]直接转换为字符串直接修改成byte[] bytes = new System.Net.WebClient().DownloadData(“/img/13/1213.jpg”);
------其他回答(1分)---------up回复内容太短了!相关资料:|||||||读取网络上的图片转成Image问题来源网络,如有侵权请告知,即处理!编程Tags:                &                    }

我要回帖

更多关于 system.drawing 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信