Я хотел бы изменить размер загруженных изображений в браузере. Я использую холст, чтобы нарисовать загруженное изображение на холст, а затем изменить его размер и использовать результат из метода toDataURL.Canvas toDataURL без альфа-канала
Упрощенный код (без загружаемых частей) выглядит примерно так:
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d', { alpha: false});
// img src contains data url of uploaded image
ctx.drawImage(img, 0, 0, imgWidth, imgHeight);
var dataUrl = canvas.toDataURL('image/png');
Проблема заключается в том dataUrl содержит альфа-канал, хотя контекст был создан с альфа-значение ЛОЖЬ.
Возможно ли получить URL-адрес данных без альфа-канала?
Если нет, я рассмотрел использование одной из библиотек изображений Javascript, но большинство из них полагаются на холст.
Кроме того, я мог бы кодировать изображение, используя данные в холсте, но я предпочел бы не делать :)
Спасибо, что это полезная информация! Просто забыл упомянуть о том, что требуется формат png. Я думаю, это невозможно с помощью метода toDataURL. – nutrija
Ну, я думаю, вы могли бы создать новый Image(), используя .jpg dataUrl как свой src. Затем drawImage, что непрозрачное изображение на холст. Затем .toDataURL ('image/png') второй раз, чтобы получить альфа-сплющенные данныеUrl. Одна из возможных проблем заключается в том, что браузеру разрешено использовать альфа-и гамма-правильные рисунки холста, поэтому возможно, что некоторые альфа-файлы повторно введены во время второго .drawImage. Попробуйте и посмотрите, подходит ли оно вашим потребностям. Удачи с вашим проектом! :-) – markE