役に立ちましたか?

解決

このように試してみて、私は黒い境界線を持っていないと思います...

System.Drawing Librariesを使用したい場合:

using (var sourceBmp = new Bitmap(sourcePath))
{
  decimal aspect = (decimal)sourceBmp.Width / (decimal)sourceBmp.Height;
  int newHeight = (int)(newWidth / aspect);

   using (var destinationBmp = new Bitmap(newWidth, newHeight))
   {
     using (var destinationGfx = Graphics.FromImage(destinationBmp))
     {
       destinationGfx.InterpolationMode = InterpolationMode.HighQualityBicubic;
       destinationGfx.DrawImage(sourceBmp, new Rectangle(0, 0, destinationBmp.Width, destinationBmp.Height));
       destinationBmp.Save(destinationPath, ImageFormat.Jpeg);
      }
    }
}
.

またはあなたはこのようにWPFと同じことができます:

using (var output = new FileStream(outputPath, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.None))
{
   var imageDecoder = BitmapDecoder.Create(inputStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.None);
   var imageFrame = imageDecoder.Frames[0];

   decimal aspect = (decimal)imageFrame.Width / (decimal)imageFrame.Height;
   var height = (int)(newWidth / aspect);

   var imageResized = new TransformedBitmap(imageFrame,new ScaleTransform(
                                                                 newWidth / imageFrame.Width * Dpi / imageFrame.DpiX,
                                                                 height / imageFrame.Height * Dpi / imageFrame.DpiY, 0, 0));

   var targetFrame = BitmapFrame.Create(imageResized);

   var targetEncoder = new JpegBitmapEncoder();
   targetEncoder.Frames.Add(targetFrame);
   targetEncoder.QualityLevel = 80;
   targetEncoder.Save(output);
}
.

WPFの方法をお勧めします。圧縮と品質が良くなるようです...

他のヒント

は、LAPMODEをTILEFLIPXYに設定したImageAttributesインスタンスを使用してDrailImageメソッドを提供します。これにより、エッジが背景色とブレンドされるのを防ぎます。

ここで他の回答のようなメモリを漏洩しないサンプルコードは、このgist

私にとっては悪いビットマップパラメータでした。この代わりに:

new Bitmap(width, height, PixelFormat.Format32bppPArgb);
.

これにピクセルフォーマットを削除するだけです。

new Bitmap(width, height);
.

とすべてが大丈夫でした。 PIXERFORMATでは、上下の境界線に黒い境界がありました。それから私はg.pixeloffsetmode= pixelOffsetmode.highqualityを試しました。最初はうまくいった。しかし、それから私は画像全体の周りに薄い境界線に気づいた。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top