Tôi có một máy ảnh kỹ thuật số pháo và tôi đặt nó để chụp ảnh với chất lượng siêu mịn và nó xuất ra một tệp .jpg có kích thước 3 mega. Nếu tôi tải nó như thế này trong ASP.NET (điều này rất hữu ích để thay đổi nó là độ phân giải dpi hoặc thu nhỏ lại hay whaterver).NET Saving jpeg với cùng chất lượng như nó đã được tải
imgPicture = Image.FromFile(Config.WorkDirectory + this.TempPhotoName);
bmpPicture = new Bitmap(imgPicture);
và sau đó tôi lưu nó lại như thế này:
bmpModified.Save(Config.WorkDirectory + this.TempPhotoName,System.Drawing.Imaging.ImageFormat.Jpeg);
nó xuất ra một jpg chỉ có kích thước 700KB hoặc hơn. Có một sự mất chất lượng.
Tôi cũng đã cố gắng tiết kiệm nó như thế này:
bmpPicture.Save(Config.WorkDirectory + this.TempPhotoName, codecJpeg, encparams);
nơi codecJpeg là
ImageCodecInfo codecJpeg = this.getEncoderInfo("image/jpeg");
private ImageCodecInfo getEncoderInfo(string mimeType)
{
// Get image codecs for all image formats
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
// Find the correct image codec
for (int i = 0; i < codecs.Length; i++)
if (codecs[i].MimeType == mimeType)
return codecs[i];
return null;
}
và encparams:
EncoderParameters encparams = new EncoderParameters(1);
encparams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 97L);
Bằng cách này, kích thước (và tôi cũng nghi ngờ về chất lượng) được duy trì nhưng tôi đang đầu vào chất lượng bằng tay.
Tôi muốn hỏi:
Có cách nào để lưu hình ảnh với chất lượng tương tự như nó đã được nạp mà không thể xác định rõ giá trị chất lượng?
Cảm ơn bạn trước
Thiết PropertyItems và lưu lại sẽ dẫn đến mất chất lượng, bởi vì hình ảnh sẽ được tái mã hóa. Đọc thêm tại đây: http://stackoverflow.com/questions/1038206/net-c-library-for-lossless-exif-rewriting – arbiter
Có, tôi đánh giá cao rằng nó sẽ được mã hóa lại - nhưng tôi nghĩ nó có ý nghĩa với mã hóa lại ở mức "tổn thất" tương tự như bản gốc, nếu bạn muốn. Bạn vẫn sẽ mất dữ liệu, nhưng có lẽ không phải là một số tiền khổng lồ. Cũng lưu ý rằng tôi đã không nói về * thiết lập * PropertyItems - Tôi đã nói về * lấy * nó để tìm ra chất lượng ban đầu, mặc dù điều đó dường như không có dữ liệu có liên quan. –
Cũng tồn tại phần tử propertyitem để tìm chất lượng jpeg - PropertyTagJPEGQuality, nhưng nó được ghi là thẻ riêng cho adobe photoshop, vì vậy tôi không biết nó có được lấp đầy bằng camera hay không. Dù sao có một chút ý nghĩa của việc lưu trữ jpeg với cùng một giá trị chất lượng jpeg, bởi vì mất chất lượng sẽ ở đó. – arbiter