当我上传任何其他类型的图像时,没有问题。这包括上传具有透明度的.png文件-保留了alpha通道。上载tif图像时,图像会变形。使用opencv恢复它们时(通过打开图像使其变形,转换为RGB并重新保存它),alpha通道消失了。最初在opencv中打开图像时,形状是x x y x3。因此alpha通道只是被完全擦除了,这与opencv无关。
尝试在管道的所有其他区域打开图像,以保持透明度。仅当图像通过Dropzone发送并保存在服务器上时,它们才会变形。所有其他经过测试的图像格式都可以。
我一直在研究将.tif图像添加到Dropzone队列中时进行实时转换的方法,但是我似乎找不到找到这种方法的方法。
例如访问Dropzone原型函数并进行事件转换->找不到没有Node即可运行的转换库。
此代码可能无济于事。我99%确信这不是配置错误,而是我必须修补的Dropzone内部错误。我只需要有关如何操作的指导。
唯一与Dropzone相关的代码在upload_form.html中:
{{ dropzone.load_css() }}
{{ dropzone.style('border: 2px dashed #0087F7; margin: 10px 0 10px; min-height: 400px; width: 800px') }}
{{ dropzone.load_js() }}
{{ dropzone.config(custom_init='this.on("sendingmultiple", function(data, xhr, formData) {formData.append("league",
document.getElementById("league").value); formData.append("season",document.getElementById("season").value);
formData.append("nickname", document.getElementById("nickname").value);
formData.append("tricode", document.getElementById("tricode").value);}); this.on("successmultiple",
function(file, status){console.log(status);});') }}
AND
app.py:
app.config.update(
UPLOADED_PATH=os.path.join(basedir, 'uploads'),
DROPZONE_ALLOWED_FILE_TYPE='image',
DROPZONE_MAX_FILE_SIZE=8,
DROPZONE_MAX_FILES=100,
DROPZONE_UPLOAD_MULTIPLE=True,
DROPZONE_PARALLEL_UPLOADS=10,
DROPZONE_IN_FORM=True,
DROPZONE_UPLOAD_ON_CLICK=True,
DROPZONE_UPLOAD_ACTION='handle_upload',
DROPZONE_UPLOAD_BTN_ID='submit',
)
预期:
上传tif图像,并且该图像与服务器上的图像相同。
实际:
上传tif图像,图像被扭曲(图像在x轴上像四倍)并且颜色错误。可以通过在Pillow或opencv中打开,从BGR转换为RGB,然后重新保存来解决此问题。尽管这样做,图像的透明部分都是(0,0,0)->黑色像素。同样,在Pillow或opencv中打开服务器副本时,alpha通道为ABSENT(形状为1200x800x3而不是1200x800x4)。