С# при обрезке появляется черная рамка изображения

Вопрос:

Извините за мой английский. Я пытаюсь обрезать изображение после перетаскивания. Это работает, но моя проблема заключается в том, что на обрезанном изображении появляются черные полужирные рамки. Я не знаю, как его решить.

Вот мой код:

using (Bitmap sourceBitmap = new Bitmap(fullSizeImage))
{
Rectangle cropRect = new Rectangle(0, 0, sourceWidth, sourceHeight);
using (Bitmap newBitMap = new Bitmap(cropRect.Width, cropRect.Height))
{
using (Graphics g = Graphics.FromImage(newBitMap))
{
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.CompositingQuality = CompositingQuality.HighQuality;
g.CompositingMode = CompositingMode.SourceCopy;
g.DrawImage(sourceBitmap, new Rectangle(0, pp, sourceWidth, sourceHeight), cropRect, GraphicsUnit.Pixel);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
ImageCodecInfo codec = ImageCodecInfo.GetImageEncoders()[4];
EncoderParameters parameters = new EncoderParameters(1);
parameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
newBitMap.Save(filePath);
}
}
}

И вот обрезанное изображение: enter image description here

Лучший ответ:

Ваш целевой образ имеет тот же физический размер, потому что для его создания вы используете те же физические размеры:

Rectangle cropRect = new Rectangle(0, 0, sourceWidth, sourceHeight);

Когда вы рисуете исходное изображение в этом новом растровом изображении, вы рисуете его со смещением pp, но все же с одинаковой высотой и шириной (так что вы только обрезаете снизу и справа). Это смещение «окрашивает» память нового растрового изображения только с этой координаты y вниз, и, следовательно, у вас черная граница.

Оцените статью
TechArks.Ru
Добавить комментарий