本人搞以C++的,初搞js, 现有一图片是.png格式,后缀被改成了.jpg格式导致IE不能正确显示,求解我要怎么样才能使该图片正确显示。 (还请附带少量代码,谢谢)
解决方案 »
- [讨论]JS脚本代码文件编辑
- jquery jcarousellite 怎么调用?
- 如何设置动态生成的html标签的属性
- 求:怎么申明json数组,json数组的方法
- 我想在javascript中判断一下输入的数据是否是正数,且小数位最多只有两位
- 在html中,<table>的<td>的height可以绝对控制吗?
- 框架之间的传值?想写一个方法实现!稻草人等高手进!
- 还是我!为什么没有人回答我呢!请问:如何禁止网页保存?效果就像我例子中的效果!帮帮忙!大虾!我急(例:http://www.37c.com.cn/info/
- 一个页面跳转简单问题
- 运动框架出现抖动怎么解决?
- 【window窗体返回值问题】
- 分数不多,也请大家帮我看一下这个问题,谢谢啦
好好的,改什么后辍名啊,改了就改了,再改回来就行啊,你又怕万一改错了。。
解决方法:
1、别让那个人改后缀
2、自己改回来,改错了,也没关系的,jpg,改为png格式的,一样能显示。
3、叫客户不要用IE(IE不是不行嘛,那换其它好了)
4、在1不听话的情况下,可以拉出去暴打一顿,就解决了。
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位总是取得不对? 求解。