图片后缀被修改,IE不支持,无法显示,求解决方法。

s_ing 2012-11-14 02:46:54
本人搞以C++的,初搞js, 现有一图片是.png格式,后缀被改成了.jpg格式导致IE不能正确显示,求解我要怎么样才能使该图片正确显示。 (还请附带少量代码,谢谢)
...全文
702 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Giberson1 2012-11-24
  • 打赏
  • 举报
回复
只改后缀是不行的。
s_ing 2012-11-16
  • 打赏
  • 举报
回复
图片是服务器给的,过程都是代码里管理的, 别在和我说什么手动改后缀、photoshop改格式了。 以的想法是:接收图片路径时先判断图片格式,然后修改为正确的后缀。 以下是我的代码。 enum ImageType{ jpg, bmp, png, gif, nothing }; ImageType image_type(const std::string &path) { std::ifstream inFile(path.c_str()); unsigned char png_type[9] = {0x89,0x50,0x4E,0x47,0x0D,0x0A,0x1A,0x0A,'/0'}; unsigned char gif_type[7] = {0x47,0x49,0x46,0x38,0x39/*0x37*/,0x61,'/0'}; unsigned char file_head[9]; for (int i=0;i<8;++i) { inFile>>file_head[i]; } file_head[8] = '/0'; switch (file_head[0]) { case 0xff: if (file_head[1]==0xd8) return jpg;//jpeg case 0x42: if (file_head[1]==0x4D) return bmp;//bmp case 0x89: if (file_head[1]==png_type[1] && file_head[2]==png_type[2] && file_head[3]==png_type[3] && file_head[4]==png_type[4]&& file_head[5]==png_type[5] && file_head[6]==png_type[6] && file_head[7]==png_type[7]) return png;//png case 0x47: if (file_head[1]==gif_type[1] && file_head[2]==gif_type[2] && file_head[3]==gif_type[3] && file_head[5]==gif_type[5] && ( file_head[4]==0x39 || file_head[4]==0x37 )) return gif; //gif default: return nothing; } } bool ModPicname(const std::string &src) { ImageType mType = image_type(src); std::string url = src; std::string::size_type iPos = url.find_last_of("."); if (std::string::npos != iPos) { switch(mType) { case jpg: url.replace(iPos+1, iPos+1, "jpg"); break; case bmp: url.replace(iPos+1, iPos+1, "bmp"); break; case png: url.replace(iPos+1, iPos+1, "png"); break; case gif: url.replace(iPos+1, iPos+1, "gif"); break; default: break; } } if (!url.empty()) { if (0 != rename(src.c_str(), url.c_str())) { return false;//修改图片名失败! } } return true; } 现在有疑问,png需要判断8位文件头,用UltraEdit打开看图片也确实是png的,为什么后4位总是取得不对? 求解。
网络科技 2012-11-15
  • 打赏
  • 举报
回复
引用 12 楼 s_ing 的回复:
引用 10 楼 xzy88 的回复:那简单啊,你再把它改回png格式不就可以显示了啊代码里头,谁知道它是不是正确格式啊? 要是万一改错了呢?
你可真够纠结的啊,呵呵 好好的,改什么后辍名啊,改了就改了,再改回来就行啊,你又怕万一改错了。。。。。 解决方法: 1、别让那个人改后缀 2、自己改回来,改错了,也没关系的,jpg,改为png格式的,一样能显示。 3、叫客户不要用IE(IE不是不行嘛,那换其它好了) 4、在1不听话的情况下,可以拉出去暴打一顿,就解决了。
s_ing 2012-11-15
  • 打赏
  • 举报
回复
引用 10 楼 xzy88 的回复:
那简单啊,你再把它改回png格式不就可以显示了啊
代码里头,谁知道它是不是正确格式啊? 要是万一改错了呢?
s_ing 2012-11-15
  • 打赏
  • 举报
回复
引用 9 楼 yenange 的回复:
用photoshop把这个图片打开, 再保存为jpg格式不就结了。
我还不如手动改下它后缀得了。
网络科技 2012-11-14
  • 打赏
  • 举报
回复
那简单啊,你再把它改回png格式不就可以显示了啊
吉普赛的歌 社区高级成员 T9 2012-11-14
  • 打赏
  • 举报
回复
用photoshop把这个图片打开, 再保存为jpg格式不就结了。
s_ing 2012-11-14
  • 打赏
  • 举报
回复
引用 7 楼 showbo 的回复:
那你得问IE了,没事不要修改后缀。。。。
服务器给的图片,他们也不肯改。
  • 打赏
  • 举报
回复
那你得问IE了,没事不要修改后缀。。。。
s_ing 2012-11-14
  • 打赏
  • 举报
回复
引用 1 楼 dongvsning 的回复:
无图无真相,怎么不支持 无法显示?
这个就别要图了吧, 我不骗你,是真的。
s_ing 2012-11-14
  • 打赏
  • 举报
回复
引用 3 楼 kansousama 的回复:
... 图片转换格式,不是改个后缀就行的
恩、是的,格式是png的, 只是后缀是jpg的, ie就不识别了。
s_ing 2012-11-14
  • 打赏
  • 举报
回复
引用 2 楼 suano 的回复:
如果电脑上都打不开,浏览器肯定也打不开的。还是保留原有格式吧。做缩略图?
电脑是可以打开的,很正常, 图片只是被改了后缀。 但是这种格式IE确不支持。
叫我三三 2012-11-14
  • 打赏
  • 举报
回复
... 图片转换格式,不是改个后缀就行的
suano 2012-11-14
  • 打赏
  • 举报
回复
如果电脑上都打不开,浏览器肯定也打不开的。还是保留原有格式吧。做缩略图?
  • 打赏
  • 举报
回复
无图无真相,怎么不支持 无法显示?

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧