Как сделать так, чтобы мы получили изображение без потерь
Я пытаюсь написать код, который получает изображения (PNG, JPG, BMP, ETC') и поворачивает изображение. Я хочу обрезать изображение без потери информации (без изменений в интерполяции), поэтому я использую
Bitmap target = new Bitmap(cropRect.Width, cropRect.Height);
using (Graphics g = Graphics.FromImage(target))
{
g.DrawImage(img, new Rectangle(0, 0, target.Width, target.Height),
cropRect,
GraphicsUnit.Pixel);
}
где цель - обрезанное изображение. img - исходное изображение, а cropRect - прямоугольник обрезки, который я хочу обрезать. Поскольку я поддерживаю размер изображения (без увеличения), не должно быть никакой потери информации.
После этого я поворачиваю изображение, используя
target.RotateFlip(RotateFlipType.Rotate90FlipNone);
потому что это поворот на 90 градусов - он должен остаться без потерь. Это верно? Я не мог найти документацию по этому вопросу, если у кого-то есть ссылка, я был бы признателен за это!
1 ответ
Вы могли бы использовать DrawImageUnscaled
/DrawImageUnscaledAndClipped
чтобы быть абсолютно уверенным, что это не делает ничего прикольного, хотя я сомневаюсь, что так или иначе будет в вашем случае. И так как это 90 градусов и / или переворот, RotateFlip
не должно ухудшать изображение.
Однако если вы сохраните изображение в формате без потерь, вы наверняка потеряете некоторую информацию.