Когда я экспортирую свой холст (с помощью toDataUrl), он всегда возвращает мне файл .png с альфа-каналом.
Нет, он не возвращает ".png файл ", toDataURL возвращает URL-адрес данных, который представляет собой строку, состоящую из заголовка ипредставление вашего файла в base64.Это представление base64 само по себе займет на 34% больше байтов, чем представленный двоичный файл.
Итак, чтобы исправить X вашей проблемы XY отправьте ваше изображение png в виде двоичного BLOB-объекта. .
Теперь, чтобы предоставить некоторый контент по вопросу Y,Я не проверял во всех браузерах, но я не думаю, что кто-либо реализовал что-то еще, кроме 32-битного вывода png.Это может измениться в будущем, более того, так как большинство UA теперь поддерживают параметр контекста {alpha: false}
2d, и что мы также, вероятно, будем иметь больший контроль над битовой глубиной, используемой в контексте, в надежде на ближайшее будущее.
Но на данный момент вам придется сделать это самостоятельно, запустив собственный png-кодер.