Я должен масштабировать изображения и превращать их в jpegs в браузере. Для этого я использовал функцию изменения размера javascript под названием Hermite-resizeУменьшение изображения с помощью Hermite-resize создает тонкую черную линию из ниоткуда
Это прекрасно работает. После повторной калибровки нескольких сотен изображений я заметил, что что-то странное случается каждый раз. С некоторыми изображениями в нижней части уменьшенного JPEG-изображения появляется тонкая черная линия.
Я думал, что это может быть из-за прозрачной линии визуализируется в уменьшенной версии. После преобразования в jpeg линия становится черной, так как jpegs не превращают фон в черный фон.
Однако, если я поставил белый фон за изображение перед его отображением как jpeg, проблема остается.
Если у кого-то есть идея о том, что создает это, или как его исправить, я был бы очень признателен.
jsfiddle пояснить, что я имею в виду:
canvas.getContext("2d").fillStyle = '#FFF';
canvas.getContext("2d").fillRect(0, 0, W2, H2);
canvas.getContext("2d").putImageData(img2, 0, 0);
document.getElementById("imageid").src = canvas.toDataURL("image/jpeg");
http://jsfiddle.net/gt4r54zr/1/
Я не уверен, если это связано, но если я установить прозрачность до полного (255) в скрипте Эрмита, то та же черная линия появляется, а также:
data2[x2 + 3] = 255;// Original value: gx_a/weights_alpha;
http://jsfiddle.net/3osq1s1w/3/
Это происходит только при точном значении пикселей? – invot
Отличный вопрос invot. Это на самом деле. Для изображения в примере я помещаю все значения пикселей в пастебин (http://pastebin.com/C43FM9k8). Однако я не вижу в ней ничего общего. Хотя я действительно не понимаю, как ответ rphv, похоже, решает мою проблему, поэтому я счастлив :). – Kasper