我需要得到来自用户的图片,用不同的格式的扩展,以及我要永远保存为“JPG”,方便搬运。 有没有一种很好的方式做到这一点在C#没有武装的质量?C#转换图片格式为JPG
回答
来自:http://msdn.microsoft.com/en-us/library/system.drawing.imaging.encoderparameter.aspx
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);
}
...
private ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
外观极好谢谢 –
以上代码似乎并不为me.It工作无法找到ImageCodecInfo类, –
它的工作原理..顺便说一句请告诉我没有@symbol在@c:\ TestPhotoQualityZero.jpg表示 –
您可以使用图像API来创建内存的图像,然后坚持它的JPG。 http://msdn.microsoft.com/en-us/library/ms142147.aspx
Windows GDI +中提供Image class和Bitmap class,用于存储 图像和在存储器操作图像。 GDI +写入图像 到磁盘文件与图像编码器和负载图像的帮助下从 磁盘文件与图像解码器的帮助。
检查Image.Save Method重载实现您的功能。它支持ImageFormat Class类型的各种图像格式。
遵循Image.Save Method (String, ImageCodecInfo, EncoderParameters)例子,可以让你保存Jpg
文件,编码等
代码片段:
using System;
using System.Drawing;
using System.Drawing.Imaging;
class Example_SetJPEGQuality
{
public static void Main()
{
Bitmap myBitmap;
ImageCodecInfo myImageCodecInfo;
Encoder myEncoder;
EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;
// Create a Bitmap object based on a BMP file.
myBitmap = new Bitmap("Shapes.bmp");
// Get an ImageCodecInfo object that represents the JPEG codec.
myImageCodecInfo = GetEncoderInfo("image/jpeg");
// Create an Encoder object based on the GUID
// for the Quality parameter category.
myEncoder = 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.
myEncoderParameters = new EncoderParameters(1);
// Save the bitmap as a JPEG file with quality level 25.
myEncoderParameter = new EncoderParameter(myEncoder, 25L);
myEncoderParameters.Param[0] = myEncoderParameter;
myBitmap.Save("Shapes025.jpg", myImageCodecInfo, myEncoderParameters);
// Save the bitmap as a JPEG file with quality level 50.
myEncoderParameter = new EncoderParameter(myEncoder, 50L);
myEncoderParameters.Param[0] = myEncoderParameter;
myBitmap.Save("Shapes050.jpg", myImageCodecInfo, myEncoderParameters);
// Save the bitmap as a JPEG file with quality level 75.
myEncoderParameter = new EncoderParameter(myEncoder, 75L);
myEncoderParameters.Param[0] = myEncoderParameter;
myBitmap.Save("Shapes075.jpg", myImageCodecInfo, myEncoderParameters);
}
//编解码器信息
private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for(j = 0; j < encoders.Length; ++j)
{
if(encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
}
希望这有助于..
我用这个简单的扩展要转换一个流,它所做的只是转换它,而对质量没有任何作用。
public static Stream ConvertImage(this Stream originalStream, ImageFormat format)
{
var image = Image.FromStream(originalStream);
var stream = new MemoryStream();
image.Save(stream, format);
stream.Position = 0;
return stream;
}
用法:
var outputStream = gifStream.ConvertImage(ImageFormat.Png);
这是此问题的最简单解决方案。大多数开发者只是省略它:3 – iceDragon
试试这个:
public static class BitmapExtension
{
public static void Save(this Bitmap bitmap, String fileName, ImageFormat imageFormat, long quality = 75L)
{
using (var encoderParameters = new EncoderParameters(1))
using (encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality))
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
bitmap.Save(fileName, codecs.Single(codec => codec.FormatID == imageFormat.Guid), encoderParameters);
}
}
}
...
Bitmap bitmap = new Bitmap("myImage.bmp");
bitmap.Save("myImage.jpg", ImageFormat.Jpeg, 50L);
- 1. 将不同的图片格式(jpg,gif,png等)转换为TIFF格式
- 2. 如何使用Objective C将.jpg图像转换为.bmp格式?
- 3. c#将所有图像格式转换为JPG
- 4. 转换.jpg图像以.png格式
- 5. 我如何将jpg图片转换成PGM格式CPP
- 6. 将EPS转换为JPG格式
- 7. 将tiff转换为jpg格式
- 8. Carrierwave PDF格式转换为JPG(MiniMagick)
- 9. 将.jpg转换为.eps格式
- 10. 将PDF转换为JPG格式?
- 11. C#base64转换为JPG图像
- 12. 如何JPG,位图格式的图像转换成矢量格式在C#
- 13. c#将HTML转换为JPG
- 14. 将JPG图像转换为tiff文件格式
- 15. 使用PHP将PDF转换为JPG格式图像
- 16. 如何将rtf转换为图像格式(jpg/png ..)
- 17. Android:是否可以将TIFF图像转换为JPG,PNG格式?
- 18. 将EMF格式转换为PNG或JPG格式。
- 19. 将“图片”/“图片”格式转换为我自己的
- 20. Blob图片无法转换为图片格式?
- 21. 如何在ASP.Net中将图像从任何格式转换为JPG格式?
- 22. 使用C将BLOB转换为Jpg
- 23. 在C++中将RGB转换为HDR图像格式(EXR格式)
- 24. PHP的PNG转换成JPG格式的问题,图像失真
- 25. 将pgm图像转换为jpg Matlab
- 26. 将Visio转换为JPG图像
- 27. ImageMagick将jpg图像转换为gif慢
- 28. 将jpg UIImage转换为位图UIImage?
- 29. 将SVG转换为图像(PNG,JPG)
- 30. 将base64图像转换为base64 JPG
这取决于平台 - 网络,应用程序,移动或者即使YOUT拍照卡:) –