我想在C#winForms应用程序上显示一个Image,但质量只有50%,是否可以使用标准的Picturebox?
也许可以通过编程方式将图像调整为50%,然后将其拉伸到Picturebox?
Image img = Image.FromFile(imgFile)
**在此处调整图片大小,或者执行其他操作**
pictureBox.Image = img;
pictureBox.SizeMode = PictureBoxSizeMode.StretchImage;
答案 0 :(得分:3)
您可以通过以下功能
更改图片的质量$scope.arealist = [];
$http.get('arealist.json').success(function (response) {
$scope.arealist = _.map(response, function (data) {
return data.area_name;
});
});
在照片框中指定50%质量图像后,
private void VaryQualityLevel()
{
// Get a bitmap.
Bitmap bmp1 = new Bitmap(@"c:\TestPhoto.jpg");
ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);
// Create an Encoder object based on the GUID
// for the Quality parameter category.
System.Drawing.Imaging.Encoder myEncoder =
System.Drawing.Imaging.Encoder.Quality;
// Create an EncoderParameters object.
// An EncoderParameters object has an array of EncoderParameter
// objects. In this case, there is only one
// EncoderParameter object in the array.
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder,
50L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityFifty.jpg", jgpEncoder,
myEncoderParameters);
myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityHundred.jpg", jgpEncoder,
myEncoderParameters);
// Save the bitmap as a JPG file with zero quality level compression.
myEncoderParameter = new EncoderParameter(myEncoder, 0L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityZero.jpg", jgpEncoder,
myEncoderParameters);
}
验证此stackoverflow.com/questions/1484759/quality-of-a-saved-jpg-in-c-sharp
答案 1 :(得分:0)
我建议你先读这个 -
How to: Set JPEG Compression Level
Turning off JPEG color downsampling for Bitmap.Save()
您可以将其保存到MemoryStream,然后从中加载新的位图 的MemoryStream。
尝试这种方法:
// Get a bitmap.
Bitmap bmp1 = new Bitmap(@"c:\TestPhoto.jpg");
ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
// Create an Encoder object based on the GUID
// for the Quality parameter category.
System.Drawing.Imaging.Encoder myEncoder =
System.Drawing.Imaging.Encoder.Quality;
// Create an EncoderParameters object.
// An EncoderParameters object has an array of EncoderParameter
// objects. In this case, there is only one
// EncoderParameter object in the array.
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 50L);
myEncoderParameters.Param[0] = myEncoderParameter;
MemoryStream ms = new MemoryStream();
bmp1.Save(ms, jpgEncoder, myEncoderParameters);
pictureBox.Image = Image.FromStream(ms);
.....
private ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}