本人搞以C++的,初搞js, 现有一图片是.png格式,后缀被改成了.jpg格式导致IE不能正确显示,求解我要怎么样才能使该图片正确显示。  (还请附带少量代码,谢谢)

解决方案 »

  1.   

    恩、是的,格式是png的, 只是后缀是jpg的, ie就不识别了。
      

  2.   

    用photoshop把这个图片打开, 再保存为jpg格式不就结了。
      

  3.   

    那简单啊,你再把它改回png格式不就可以显示了啊
      

  4.   

    你可真够纠结的啊,呵呵
    好好的,改什么后辍名啊,改了就改了,再改回来就行啊,你又怕万一改错了。。
    解决方法:
    1、别让那个人改后缀
    2、自己改回来,改错了,也没关系的,jpg,改为png格式的,一样能显示。
    3、叫客户不要用IE(IE不是不行嘛,那换其它好了)
    4、在1不听话的情况下,可以拉出去暴打一顿,就解决了。
      

  5.   

    图片是服务器给的,过程都是代码里管理的, 别在和我说什么手动改后缀、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位总是取得不对? 求解。