图片读取显示时变大

填报页面上传图片到mysql数据库,mediumblob,读取时图片单元格用图片显示内容,变成PNG格式并变大了,不知什么原因。

上传时:

微信图片_20191113103211.png

读取时:

默认显示是这样,下载是原来图片大小,但我想直接显示在页面上,不知有没有什么办法不让它变大

blob.png


FineReport 吕洪海 发布于 2019-11-13 10:39 (编辑于 2019-11-13 10:55)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
吕洪海Lv2见习互助
发布于2019-11-28 13:41(编辑于 2019-11-29 10:55)

为了搞定这个问题,学习了十多天的JS,算是初步解决了。思路是图片以普通格式显示,会有一个onclick的下载链接。在加载结束后加入JS代码。先取出加载图片的SPAN,取出图片地址,再用图片显示格式的DIV,用这个新的图片地址替换掉原来的SPAN。(初学,简化或优化代码我就不考虑了,FOR循环都不怎么会用,还好我的是页面是固定的,只有两张图)。可惜看不懂页面原来引用的JS代码,或许应该有更好办法。

var reg = document.getElementsByTagName("span");

console.log(reg);

var reg0 = document.getElementsByTagName("span")[0];

var reg1 = document.getElementsByTagName("span")[1];

var parent0 = reg0.parentNode;

var parent1 = reg1.parentNode;

var regtext0 = reg0.outerHTML;

console.log(regtext0);

var regtext1 = reg1.outerHTML;

console.log(regtext1);

//if (regtext1 = "" < span class = "sep" > < /span>""){console.log("regetext1");};

var result0 = regtext0.match(/\(\'([^)]*)\'\)/);

var result1 = regtext1.match(/\(\'([^)]*)\'\)/);

console.log(result0, result1);

if (result0) {

var newresult0 = result0[1].replace(/amp;/g, "");

var div0 = document.createElement('div');

parent0.insertBefore(div0, reg0);

var dstyle0 = "border:0;background:url(" + newresult0 + ") no-repeat;width:607px;background-position:center;height:342px;background-size:contain";

div0.setAttribute('style', dstyle0);

reg0.remove(0);

}

if(result1){

var newresult1 = result1[1].replace(/amp;/g, "");

        var div1 = document.createElement('div');

        parent1.insertBefore(div1, reg1);

        var dstyle1 = "border:0;background:url(" + newresult1 + ") no-repeat;width:607px;background-position:center;height:342px;background-size:contain";

div1.setAttribute('style', dstyle1);

reg1.remove(0);

}



这个替换过程应该可以封装函数的。这个在电脑网页上可以正常显示,但在移动客户端里就不行了,客户端里无法识别这个document,初学JS,搞不懂,不知道如何获取,先不搞它了,有懂JS的麻烦告诉下有什么办法。

最佳回答
0
hpmpkkLv3中级互助
发布于2019-11-13 10:46

所有的都是吗,还是只是这一张

  • 吕洪海 吕洪海(提问者) 都是这种情况
    2019-11-13 10:47 
  • hpmpkk hpmpkk 回复 吕洪海(提问者) 图片是二进制数据, 例如某一个像素的值是(95, 20, 46,159), 在二进制文件里只需要32位,即四个字节就可以保存完这个像素的信息。 但是如果你要用文本保存,需要看你的具体保存方式, 例如下面这个方式,把每个像素的颜色信息的数值用文本表示, 则需要\"95, 20, 46,159\".length,即12个字节。 所以图片转化为文本存储后变大是正常的
    2019-11-13 10:49 
最佳回答
0
free_zzLv6中级互助
发布于2019-11-13 11:01

image.png我的没有变大诶

  • 吕洪海 吕洪海(提问者) 所以我想知道问题出在哪?
    2019-11-13 11:06 
  • free_zz free_zz 回复 吕洪海(提问者) mysql我是用的blob,图片的话填报是文件控件,显示也是文件控件
    2019-11-13 11:13 
  • 吕洪海 吕洪海(提问者) 回复 free_zz 确定上传的原图也是这么大吗,可否把原图大小发出来?
    2019-11-15 08:13 
  • 2关注人数
  • 537浏览人数
  • 最后回答于:2019-11-29 10:55
    请选择关闭问题的原因
    确定 取消
    返回顶部