Добрый день.
Не могу добавить цвета в изображение. Должно быть цветное, сохраняется черно-белое. Не могу придумать, от чего так.
JS код svg to png:d3.select('#saveButton').on('click', function(){
var svg = document.querySelector('svg');
var svgString = getSVGString(svg);
svgString2Image( svgString, 2*dim.width, 2*dim.height, 'png');
});
// Below are the functions that handle actual exporting:
// getSVGString ( svgNode ) and svgString2Image( svgString, width, height, format, callback )
function getSVGString( svgNode ) {
svgNode.setAttribute('xlink', 'http://www.w3.org/1999/xlink');
var serializer = new XMLSerializer();
var svgString = serializer.serializeToString(svgNode);
svgString = svgString.replace(/(\w+)?:?xlink=/g, 'xmlns:xlink='); // Fix root xlink without namespace
svgString = svgString.replace(/NS\d+:href/g, 'xlink:href'); // Safari NS namespace fix
return svgString;
}
function svgString2Image( svgString, width, height, format, callback ) {
var format = format ? format : 'png';
var blob = new Blob([ svgString], { type: 'image/svg+xml' });
var imgsrc = 'data:image/svg+xml;base64,'+ btoa( unescape( encodeURIComponent( svgString ) ) ); // Convert SVG string to data URL
var url = window.URL.createObjectURL(blob);
var image = new Image();
var canvas = document.createElement("canvas");
var context = canvas.getContext("2d");
canvas.width = width;
canvas.height = height;
image.onload = function() {
context.drawImage(image, 0, 0, width, height);
var canvasUrl = canvas.toDataURL("image/png");
canvas.remove();
send_data(canvasUrl)
};
image.src = url;
}
Сохраняем изображение:data = request.POST['img_data'][22:]
data = base64.b64decode(data)
# with open("imageToSave5.png", "wb") as fh:
# fh.write(data)
# print(data)
# data = data.encode()
file = io.BytesIO(data)
img = PIL.Image.open(file, 'r',)
img.convert(mode='RGB', colors=256)
img.save('test1.png')
data = {'status': 'success'}
return JsonResponse(data)
То, что хочу сохранить:
То, как сохраняется: