เมื่อพัฒนาเว็บไซต์ การสร้างภาพขนาดย่อเป็นฟังก์ชันที่ใช้กันทั่วไปและใช้งานได้จริง ในอดีตสามารถทำได้ด้วยความช่วยเหลือของส่วนประกอบ COM ใน ASP เท่านั้น แต่ตอนนี้สามารถนำไปใช้งานได้อย่างง่ายดายใน .NET โดยใช้ไลบรารีคลาสอันทรงพลังของ กรอบการทำงาน รหัสที่สมบูรณ์ถูกโพสต์ด้านล่าง (พร้อมหมายเหตุโดยละเอียด) อ้างอิงถึงบทความบางส่วนบนอินเทอร์เน็ตและเนื้อหาที่เกี่ยวข้องกับ .net sdk ทั้งสี่วิธีใช้ในการอัพโหลดรูปภาพใน QQROOM Network Home
/// <สรุป>
/// สร้างภาพขนาดย่อ
/// สรุป>
/// เส้นทางรูปภาพต้นฉบับ (เส้นทางทางกายภาพ)
/// เส้นทางรูปขนาดย่อ (เส้นทางทางกายภาพ)
/// ความกว้างของภาพขนาดย่อ
/// ความสูงของรูปขนาดย่อ
/// วิธีสร้างภาพขนาดย่อ
โมฆะสาธารณะคง MakeThumbnail (สตริง originalImagePath, สตริงรูปขนาดย่อ Path, ความกว้าง int, ความสูง int, โหมดสตริง)
-
รูปภาพ originalImage = Image.FromFile (OriginalImagePath);
ความกว้าง int = ความกว้าง;
ความสูง int = ความสูง;
อินท์ x = 0;
อินท์ y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;
สวิตช์ (โหมด)
-
case "HW"://ระบุสเกลความสูงและความกว้าง (อาจผิดรูปได้)
หยุดพัก;
กรณี "W"://ระบุความกว้างและความสูงตามสัดส่วน
toheight = originalImage.Height * ความกว้าง/OriginalImage.Width;
หยุดพัก;
กรณี "H"://ระบุความสูงและความกว้างตามสัดส่วน
towidth = originalImage.Width * ความสูง/OriginalImage.Height;
หยุดพัก;
กรณี "ตัด"://ระบุความสูงและความกว้างที่จะตัด (ไม่เสียรูป)
if((double)OriginalImage.Width/(double)OriginalImage.Height > (สองเท่า)towidth/(double)toheight)
-
โอ้ = ภาพต้นฉบับความสูง;
ow = originalImage.Height*towidth/toheight;
ย = 0;
x = (OriginalImage.Width - โอ้)/2;
-
อื่น
-
ow = originalImage.Width;
oh = originalImage.Width*height/towidth;
x = 0;
y = (OriginalImage.Height - โอ้)/2;
-
หยุดพัก;
ค่าเริ่มต้น :
หยุดพัก;
-
//สร้างรูปภาพ bmp ใหม่
Image bitmap = new System. Drawing.Bitmap (towidth, toheight);
// สร้างกระดานวาดภาพใหม่
กราฟิก g = System. Drawing.Graphics.FromImage (บิตแมป);
// ตั้งค่าวิธีการแก้ไขคุณภาพสูง
g.InterpolationMode = System. Drawing. Drawing2D.InterpolationMode.High;
// ตั้งค่าคุณภาพสูง ความเร็วต่ำ เพื่อแสดงความนุ่มนวล
g.SmoothingMode = System. Drawing. Drawing2D.SmoothingMode.HighQuality;
// ล้างผ้าใบและเติมด้วยสีพื้นหลังโปร่งใส
g.Clear(Color.Transparent);
//วาดส่วนที่ระบุของรูปภาพต้นฉบับในตำแหน่งและขนาดที่ระบุ
g.DrawImage(ภาพต้นฉบับ, สี่เหลี่ยมผืนผ้าใหม่ (0, 0, ความกว้างสูงสุด, ความสูง)
สี่เหลี่ยมผืนผ้าใหม่ (x, y, โอ้, โอ้)
GraphicsUnit.Pixel);
ลอง
-
//บันทึกภาพขนาดย่อในรูปแบบ jpg
bitmap.Save(thumbnailPath, System. Drawing.Imaging.ImageFormat.Jpeg);
-
จับ (System.Exception e)
-
โยนอี;
-
ในที่สุด
-
ต้นฉบับรูปภาพทิ้ง ();
บิตแมป.ทิ้ง();
g.ทิ้ง();
-
}
สำหรับวิธีคีย์ Graphics.DrawImage โปรดดูที่ ms-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfsystemwritinggraphicsclassdrawimagetopic11.htm
http://www.cnblogs.com/jialine/archive/2006/09/15 /505459.html