Richard MacCutchan
Когда изображение искажается, это часто происходит потому, что одно измерение настраивается без другого. Ключом к сохранению правильного соотношения сторон при изменении размера изображения является алгоритм, используемый для вычисления этого соотношения, а именно:
NewHeight = GivenWidth * (OriginalHeight / OriginalWidth)
or
NewWidth = GivenHeight * (OriginalWidth / OriginalHeight)
Этот расчет предполагает, что “заданный...” - это размер, на который должно быть изменено изображение. Как только мы это узнаем, мы можем умножить его на аспект исходного изображения, и это даст нам значение другой стороны, в котором мы нуждаемся. Итак, предположим, что исходное изображение имеет ширину 1000 и высоту 1600, и мы хотим, чтобы его размер был изменен до ширины 500:
Сначала найдите аспект: (1600/1000) = аспект 1.6
Теперь умножьте аспект на желаемую новую ширину: 1.6 * 500
Результатом этого умножения будет 800, то есть то, каким должен быть наш рост
Иначе говоря:
800 = 500 * (1600 / 1000)
Таким образом, полученное изображение будет иметь высоту 800 и ширину 500.
Member 8525852
Вы отвечаете на конкретный проект Библиотеки генерации изображений штрих-кодов...
https://www.codeproject.com/Articles/20823/Barcode-Image-Generation-Library
..или вы делаете общее замечание о соотношении сторон и изменении размера изображения?
Моя конкретная проблема заключается в том, что вы должны указать высоту и ширину функции, которая генерирует изображение. Откуда вы знаете, что такое "исходная высота/ширина"? В идеале вы вообще не будете указывать высоту/ширину, и функция будет генерировать изображение с правильным соотношением сторон.
Что касается проверки документации, то она, похоже, не рассматривается. Демонстрационное приложение библиотеки, которое поставляется с кодом, отображает искаженные изображения, а также текстовые поля для ввода высоты и ширины. Я предполагаю, что вы создаете изображение, а затем играете с параметрами высоты и ширины, чтобы создать изображение с правильным соотношением сторон, но я хотел убедиться, что я был прав.
Richard MacCutchan
Если у вас есть проблема с кодом, который вы получили из статьи CodeProject, то вы должны разместить свой вопрос на форуме статьи, чтобы человек, написавший код, мог вам помочь.