C#: Giảm chất lượng ảnh JPEG
Thông tin tài liệu:
Nội dung trích xuất từ tài liệu:
C#: Giảm chất lượng ảnh JPEGC#: Giảm chất lượng ảnh JPEG.Cập nhật: 21/8/2008 với no commentsXếp trong: Lập trình, C#, ApplicationTrong bài viết này các bạn sẽ được học cách làm thế nào tạo một ứng dụng nhỏ có ích- một ứng dụng có thể lấy mọi ảnh JPEG trong một thư mục và thay đổi chất lượngảnh theo tỷ lệ mong muốn, và đương nhiên giảm được cả kích thước của file JPEG.Vì vậy...Trong bài viết này các bạn sẽ được học cách làm thế nào tạo một ứng dụng nhỏ có ích- một ứng dụng có thể lấy mọi ảnh JPEG trong một thư mục và thay đổi chất lượngảnh theo tỷ lệ mong muốn, và đương nhiên giảm được cả kích thước của file JPEG.Vì vậy, ngoài việc sử dụng một trình giải mã để giảm chất lượng của hình ảnh, bạncũng sẽ được học cách quét tất cả các ảnh trong một thư mục theo một định dạng nàođó, và đưa nó vào trong ListBox.Thiết kế ứng dụng:Khởi động Visual Studio 2005 và bắt đầu tạo ra một ứng dụng Window C#. Trên đó tavẽ hai nút - btnOpen và btnReduce - chúng sẽ được sử dụng để chọn thư mục mà bạnmuốn tìm các ảnh để chỉnh sửa, và một thư mục để các ảnh chỉnh sửa sẽ được lưuvào. Điều khiển lớn nhất trên form này là điều khiển ListBox có tên là lstPhotos, nóhiển thị danh sách nơi lưu trữ các file được giảm chất lượng sẽ được lưu. Tiếp đếncó một điều khiển NumericUpDown tên numQual với giá trị nằm trong khoảng 1 - 100- sẽ xác định chất lượng mà người dùng muốn giảm. Cuối cùng phần tử prgReduce -một ProgressBar sẽ hiển thị thông tin tiến trình thay đổi tất cả các file ở trên. Bạn sẽthấy rằng thanh tiến trình này sẽ làm việc khác chính xác, mặc dầu chúng ta khôngdùng đến một thread tách biệt trong mã giảm chất lượng ảnh.Ngoài ra, ở đây chúng ta còn cần đến 2 hộp thoại được phát sinh ra khi nhấn vào nútbtnOpen và btnReduce. Chúng cho phép người dùng lựa chọn thư mục mà họ muốn cácfile được lấy ra và nơi những file mới được đưa vào. Hai hộp thoại của chúng ta làFolderBrowserDialog và được đặt tên như sau:Viết mã ứng dụng:Vì chúng ta làm việc với các file đồ họa và các thư mục, chúng ta sẽ sử dụng đến cáccâu lệnh using sau:view plainprint? 1. using System.IO; 2. using System.Drawing.Imaging;Mã nguồn của chúng ta được chia tành hai phần:phần quét thư mục là nơi chúng ta định lấy ảnh ra, và phần xử lý giảm chất lượngảnh rồi ghi lại.Phần thứ nhất được nằm trong sự kiện click vào nút btnOpen:view plainprint? 1. private void btnOpen_Click(object sender, EventArgs e) 2. { 3. if (fbdOpen.ShowDialog() == DialogResult.OK) 4. { 5. // Clear any previous items in the list 6. lstPhotos.Items.Clear(); 7. // Run a loop through all the files in the directory at the selected path 8. foreach(string Filename in Directory.GetFiles(fbdOpen.SelectedPath)) 9. { 10. // Well create a new FileInfo object from the file path 11. FileInfo fiPicture = new FileInfo(Filename); 12. // If its a JPEG file 13. if (fiPicture.Extension.ToLower() == .jpeg || fiPicture.Extension.ToLow er() == .jpg) 14. { 15. // Add it to the list of files 16. lstPhotos.Items.Add(Filename); 17. } 18. } 19. } 20. // We want the ProgressBar to have the same maximum value as the number of pictures to resize 21. prgReduce.Maximum = lstPhotos.Items.Count; 22. }Với việc chú giải, đoạn mã khá dễ dàng có thể hiểu được làm điều gì. Tất cả điềuchúng ta làm là lặp qua các file trong thư mục, nếu như chúng có phần mở rộng làjpeg/jpg thì chúng ta sẽ đưa nó vào danh sách.Hãy xem sự kiện click vào nút btnReduce, nơi có chứa phần mã thứ hai của chúng taviết, và có một đoạn nhỏ rất thật thú vị là đoạn mã viết để làm giảm chất lượng ảnh:view plainprint? 1. private void btnReduce_Click(object sender, EventArgs e) 2. { 3. // Reset the progress bar 4. prgReduce.Value = 0; 5. // Show the FolderBrowserDialog where the user selects where to save the files 6. if (fbdSave.ShowDialog() == DialogResult.OK)7. {8. // We will store the correct image codec in this object9. ImageCodecInfo iciJpegCodec = null;10. // This will specify the image quality to the encoder11. EncoderParameter epQuality = new EncoderParameter(System.Drawing.Ima ging.Encoder.Quality, (int)numQual.Value);12. // Get all image codecs that are available13. ImageCodecInfo[] iciCodecs = ImageCodecInfo.GetImageEncoders();14. // Store the quality parameter in the list of encoder parameters15. EncoderParameters epParameters = new EncoderParameters(1);16. epParameters.Param[0] = epQuality;17. // Loop through all the image codecs18. for (int i = 0; i < iciCodecs.Length; i++)19. {20. // Until the one that we are interested in is found, which is image/jpeg21. if (iciCodecs.MimeType == image/jpeg)22. ...
Tìm kiếm theo từ khóa liên quan:
thủ thuật máy tính công nghệ thông tin tin học quản trị mạng computer networkGợi ý tài liệu liên quan:
-
52 trang 431 1 0
-
24 trang 357 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 318 0 0 -
Làm việc với Read Only Domain Controllers
20 trang 305 0 0 -
74 trang 302 0 0
-
96 trang 296 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 289 0 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 283 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 277 0 0 -
Tài liệu dạy học môn Tin học trong chương trình đào tạo trình độ cao đẳng
348 trang 269 1 0 -
Tài liệu hướng dẫn sử dụng thư điện tử tài nguyên và môi trường
72 trang 267 0 0 -
64 trang 264 0 0
-
Bài giảng An toàn và bảo mật thông tin - Trường đại học Thương Mại
31 trang 255 0 0 -
20 trang 250 0 0
-
Giáo trình Hệ thống mạng máy tính CCNA (Tập 4): Phần 2
102 trang 248 0 0 -
Bài giảng: Lịch sử phát triển hệ thống mạng
118 trang 247 0 0 -
Đề cương chi tiết học phần Thiết kế và cài đặt mạng
3 trang 236 0 0 -
47 trang 231 0 0
-
Giáo trình Hệ điều hành: Phần 2
53 trang 221 0 0 -
Báo cáo tốt nghiệp: Tìm hiểu Proxy và ứng dụng chia sẻ Internet trong mạng LAN qua Proxy
38 trang 219 0 0