一个对上传图片进行处理的函数(等比例缩放) --koma
1一个可以使得上传的图片大小按照指定的宽度,高度自动按比例进行缩放
2
3,生成的JPG还可以指定其图片的压缩比。很实用。
4
5 public string upimgscalesave(HttpPostedFile UpFile,string id,int imgw,string bcwz)
6
7//UpFile HtmlInputFile控件类
8
9//id 上传后保存的文件名
10
11//改变的图片宽度,高度吗,当然是自动计算拉!
12
13//bcwz上传后要存服务器那里啊!
14
15
16 {
17 int FileLength;
18 int imgh=0;
19 FileLength = UpFile.ContentLength; //记录文件长度
20
21 if (FileLength == 0)
22 { //文件长度为零时
23 return "null";
24 }
25 else
26 {
27 Byte[] FileByteArray = new Byte[FileLength]; //图象文件临时储存Byte数组
28 Stream StreamObject = UpFile.InputStream; //建立数据流对像
29 StreamObject.Read(FileByteArray,0,FileLength);
30 System.Drawing.Image orimg=System.Drawing.Image.FromStream(StreamObject);
31
32
33 string mimeType ="image/jpeg";
34 ImageCodecInfo[] encoders;
35 encoders = ImageCodecInfo.GetImageEncoders();
36 for(int j = 0; j < encoders.Length; ++j)
37 {
38 if(encoders[j].MimeType == mimeType)
39 myImageCodecInfo=encoders[j];
40 }
41
42
43 System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
44 myEncoderParameters = new EncoderParameters(1);
45 myEncoderParameter = new EncoderParameter(myEncoder, 80L);
46
47
48
49
50
51//80L压缩比拉
52
53
54
55
56 myEncoderParameters.Param[0] = myEncoderParameter;
57
58
59 if(imgw==0&&imgh==0)
60 {
61
62
63
64 orimg.Save(bcwz+"\\"+id+".jpg",myImageCodecInfo,myEncoderParameters);
65
66
67
68 //orimg.Save(bcwz+"\\"+id+".jpg",ImageFormat.Jpeg);
69 orimg.Dispose();
70
71 }
72 else
73 {
74 double bl=0.0F;
75 bl=imgw/Convert.ToDouble(orimg.Width);
76 imgh=Convert.ToInt32(orimg.Height*bl);
77 b = new Bitmap(imgw,imgh);
78 g = Graphics.FromImage(b);
79 Rectangle destRect1 = new Rectangle( 0, 0, imgw, imgh);
80 //GraphicsUnit units = GraphicsUnit.Pixel;
81 g.DrawImage(orimg,destRect1);
82 b.Save(bcwz+"\\"+id+".jpg",myImageCodecInfo,myEncoderParameters);
83 b.Dispose();
84 g.Dispose();
85 orimg.Dispose();
86
87 }
88 return bcwz;
89 }
90 }
91