異なる形式の拡張子を持つユーザーから画像を取得する必要があります。扱いやすいように、画像を「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;
}
優秀はあなたに感謝を取る場合でも、 –
以上コードは私のために働いていないようです。それはImageCodecInfoクラスを見つけることができません。 –
は動作します.. btw @c:\ TestPhotoQualityZero.jpgの@symbolは –
イメージAPIを使用してイメージをメモリ内に作成し、それをJPGで保持することができます。 http://msdn.microsoft.com/en-us/library/ms142147.aspx
WindowsのGDI +メモリに 画像を保存し、メモリ内の画像を操作するためのImage classとBitmap classを提供します。 GDI +はイメージエンコーダの助けを借りてイメージ をディスクファイルに書き込み、 ディスクイメージのイメージをイメージデコーダの助けを借りて読み込みます。
オーバーロードをチェックして機能を実装してください。タイプImageFormat Classのさまざまな画像フォーマットをサポートしています。
あなたはエンコーディングなど
コードスニペットとJpg
ファイルを保存できるようになるこれ、Image.Save Method (String, ImageCodecInfo, EncoderParameters)上の例は次のとおり
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. tiffをjpg形式に変換する
- 2. ASP.Netで画像をどのような形式からJPG形式に変換するには?
- 3. SVGファイルを他の画像形式に変換するには
- 4. アンドロイドでJPEG/PNG画像をTIFF画像形式に変換するOS
- 5. 画像の形式をPythonで変換する
- 6. 画像をbase64に変換し、JSON形式でサーバーにアップロード
- 7. 3バイトアスキー署名形式を画像に変換
- 8. PDFバイト配列をjpg画像に変換する(JAVAプロジェクト)
- 9. paperclip - tiff画像をjpgまたはpngに変換する
- 10. PyQt4 jpeg/jpgサポートされていない画像形式
- 11. すべての画像をjpgに変換
- 12. ゼロパッドの名前変更。画像(2).jpg - >画像(002).jpg
- 13. 画像をテキスト形式に変換するiphone Classはありますか?
- 14. linux osの文書形式をjpgファイルに変換する方法
- 15. jpeg画像のシーケンスをビデオ形式に変換する方法は?
- 16. C/C++でchararcterを\ uxxx形式に変換する
- 17. PNGをサイズ変更してPHPのJPG画像に変換する
- 18. C sharpテキストをjpgに変換する方法 - 画像の拡張子を変更する方法
- 19. MetaStock形式をCSV形式に変換するには?
- 20. Coldfusion日付形式からCシャープ形式への変換
- 21. cで画像ファイルタイプを変換する
- 22. 日付形式を別の形式に変換する方法
- 23. PHPのMYSQL DATE形式をSTRING形式に変換する
- 24. TIFF形式をRAW画像に変換できるC++関数はありますか?
- 25. C#でPNG形式にBase64でPNG画像の文字列を変換する方法
- 26. 画像変換(強風)/ C++
- 27. グレースケール画像変換ターボC++
- 28. htmlをms_word形式に変換する
- 29. docをpdf形式に変換する#
- 30. PDFをTIFF形式に変換する
- ウェブ、アプリケーション、モバイルまたはYOUT写真カード:) –