Member 13109973 Ответов: 1

Уменьшите или сожмите размер изображения перед загрузкой с помощью asyncfileupload


Я хочу уменьшить размер изображения или сжать его до начала загрузки. Я хочу справиться с этим в onclientuploadstarted событии asyncfileupload.

Спасибо,
Саурав

Что я уже пробовал:

До сих пор не нашел никакого решения.

Patrice T

У вас есть вопрос ?
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.

Nick_3141592654

Формат изображения? Целевое сжатие? Ограничение(ы) качества изображения? Есть ли у вас магические навыки, чтобы привести их в действие?

Member 13109973

сохраняйте тот же формат изображения. Исправьте сжатие до 50% изображения. Никаких ограничений по качеству. Вы пользуетесь whatsapp? В whatsapp они сжимают изображение.
И проверьте эту ссылку http://makeitsolutions.com/labs/jic/ или https://github.com/brunobar79/J-I-C его сжатие изображения. Я хочу точно то же самое, но с asyncfileupload. Любые зацепки будут сильно оценены.

1 Ответов

Рейтинг:
0

Nick_3141592654

Итак, вы говорите о повторный отбор проб изображение. Например, начиная с PNG 4096x2048 (или любого другого формата), вы хотите преобразовать его, скажем, в 2048x1024, который сохраняет соотношение сторон, но сжимает размер в 4 раза (2 в каждом измерении).

Как правило, вы не можете повторно выполнить выборку, не оказав некоторого влияния на качество, потому что существует необходимая интерполяция, которая вводит некоторое размытие между соседними пикселями. Однако для большинства практических целей это нормально. Не беспокойтесь об этом, потому что Альго были разработаны в течение многих лет, и вы не собираетесь делать лучше, чем использовать существующие "готовые".

Там есть хороший Пример проекта C# на эту тему в другом месте на проекте кода, и еще один, который идет более глубоко на выбор алгоритма повторной выборки здесь.

Наконец, вы упомянули о 50% - ном сжатии. Если вы имеете в виду 50% от общего размера изображения, то это требует уменьшения размеров X и Y на 1/SQRT(2) = 0.707. Например, исходное изображение 4096 X 2048 должно быть уменьшено до 2896,3 X 1448,15: в этом случае вам нужно будет округлить до целого числа пикселей, такого как 2896 X 1448. Интерполяция, как правило, будет более оптимальной (и с большей вероятностью достигаемой вычислительной оптимизацией), если вы придерживаетесь сокращения каждого измерения степенями 2, но в этом случае минимальное достигнутое сжатие будет 2x2 => 4 => 25% - ное уменьшение размера.

Надеюсь, это поможет.