Я работаю над сайтом, на котором я получаю контент, и мне нужно превратить его в работающий сайт.
Из-за строгих требований я не могу полагаться на javascript, и мне нужно, чтобы сайт работал во всех наиболее используемых браузерах (и версиях). Это включает в себя IE8 (и желательно ниже).
Среди доставленного контента — изображения в кодировке Base64. Эти изображения поставляются с информацией об изображении, встроенной перед ним. (данные: изображение / PNG; Base64, [данные изображения])
Тем не менее, так как изображения довольно большие, < IE8 не может обрабатывать изображения. Я работал с учебник с этого сайта (среди других), чтобы заставить это работать, однако, я был неспособен до сих пор.
Как я могу преобразовать изображение в кодировке base64 в рабочий формат, используя только PHP? Желательно без необходимости хранить изображение где-нибудь на сервере.
Вам нужно извлечь тип изображения, чтобы вы могли использовать его как тип содержимого, а затем просто декодировать данные изображения:
Простая реализация будет выглядеть так:
$image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAEqCAMAAACxwopAAAABOFBMVEX///8AAAAAAACBgYUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBgYUAAAAAAAAAAAAAAAAAAACBgYWmim6mim6mim7Siin2ih/AlFLSiinSiinSiinSiinSiin2ih/2ih/SiinAlFLAlFLAlFL2ih/AlFLAlFLAlFKmim7AlFL2ih/0eiD2ih/Siimmim72ih/AlFLAlFL2ih/AlFL0eiDAlFL2ih/AlFLSiin0eiDAlFLAlFLSiimmim6mim7Siin0eiCmim6BgYWmim7Siimmim72ih+mim7Siimmim70eiCmim6mim7Siin0eiDSiin0eiD2ih/0eiD0eiD0eiD2ih/2ih/2ih/0eiD0eiCmim6BgYX2ih/0eiD0eiCBgYX0eiDSiikAAACBgYWmim7AlFL0eiD2ih/atez0AAAAYXRSTlMAv0CAgO8Qn88wIGC/31CvcI9AQIC/7xDvEECAvyBAgN+/UCCvn2AQIN/fv49Q7zBAcM+PcIC/MJ9Az69g31CvgJ8gMM+v72BwcFDPj48QMI8gMM+vYHCf798QYFAgYBCfEQM3FQAAFuFJREFUeF7s3C1uxEAMx9HeJ3ylYUELgpoPVY3UjBY5979BWUFNlo713g1+9C/LHwUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArfe6ccC2zMcZEd8V44Crzccef65ieUB/TfFPK5YIfEYyF0sEeiSvYolAi2Sq1ghEVi0ROCOpNrsDUyRLsURgrj+7Az2So1gisEWyDxcBmN2BPZKtWCJwRNJHawDM7sAy7hEssP68F3BFco5RCHw9n2vp2R1YH/d9P94+gh3w9wTwy97drTQOhHEYn6tIyFctS49qS6EUt0JBD0ooC7a6alehLn1POvd/B4u7CEZnncZEMpk8v5vIn5fO012un23VMfaHd2bKcQDCgf4nv/nk2f1aOQ/gc/5i6nF7AuBz/uJE2a0PRa4nnwH0hrpgouweDu+slasAhCP9xtTTszvA57zkeL9uz9kdwIk2sY/3WXuSzwCm2mQYenR2BzDRRiPaE/4D2133SD4DjHcvzu4A4532BMB4b1fyGcCZNslDy9m9TclnADe5Nhn4dHYHsNVGu64nnwHG+50f/7QIMN59OrsDuNdG9z4lnwEMdJG9K/WzbclnAGGuTc58OrsD2GmjLe2JTgPjfe/RPy0CjHf/k88A492n9gSAkS7VlXpqYfIZQDjUJlOfks8AetropAtnd4Dx3tnkM8B4n3l1dgfoSnX17A7QlVrTnugAEIV98C35DDDe/T+7A4z3brYnAMb7b9/+aRGgK+Vu8hnAJljVFIV1tj0BIBVZxl8UhX10IvkMYCHP5lkd493N5DOAKJC/gqSO8e7k2R1AIi/6cf3j/YcD/7QIIJNXLrLKXSkHk88AUilIoqpdKefO7gDG8kZ/XG8U9pb2ROOAvryTZtXGu2PJZwCJmFxFlca7U2d3AFkgRsFCHeOXNsknLrUnAFzI/6SbmrpST82e3QHE8oF5VE8U9tBo8hnAUj4SrCpEYR1pTwBYicUyrmG87xtMPgOIArGaZxXGe/PJZwBRInZB8rmu1MSRszuALBW7flytK7Vu+J8WAcR9sbvIKkRhHUg+A0gCsUuiClHY5s/uALILseuPPz/er2lPOACIl2KXZqXHu1PJZwCrQOyuorJdKafO7gCiudgFi7JdKbfaEwDiVOzSTbkorGvJZwCLQOzmUfnxfupO8hlAdCV2warUeHeuPQFgk4rdMi453ovJ59P97HytGgRgXOqncvau1P2r5PPt3eX5k2ojgKcu9ijs4fH08kf77m8AP5WLS0Rh2wrgqUuaHTXeR8obAE9dzON92FPOApDNxa4/toz3UajaD+Cpy+aDrlTeU94AeOpijsIOQuUNgKcuxihsvlMeAfipXBoXxruvn3OApy7F8Z5vlb8AnrqEU6312Y1qGQBZmacukw58zgGeuuxuVMMAfPv+lU9dnADgD/t2sNI8EEVx/MOC8G27kKm20CRkQhZCwhBaEqEbF27EZxC57/8KgovSor3UzBgv9f97geFAZjMnR6QufTHB1OXXAMjlQx/yH5m6PBuICCDIXtZtUk9dbhYGIgLo5ZAbfJFy6vJgICGASj6py7xKNHV5tBARgJcv9V2TYupi4ikOQCknDe0mcuqyNRERQC2Ks4u3l6XdlzgAhSj2xdvIqcudiYgAWtHpxZs+dVnbiAhgEMU3i7fV0uRLHAAnKr1406cuOxsJATSiGFG8LQ5+lVvZiAigE8Wo4m21M/YSByCTsVzpC23qsjZSrQGoJEof8urU1OXeSEQAuSgiirfFdmklIgDvJAE3tIXhkAA2bSaKiOLNFABN6CWFPjSGUwKofFmLIqJ4swRA0Q5OFBHFmyUAmi6TBGrbKQFUeaglUrAfE0DhSycR8n8XD6B4u/ymDaB4y6YLAGA+OzKfqnjrlPMTAzB7OzKbqnhrlPMtALjo8cWbO+d84Grv/+QBuOjxxdvwRy/69bmfLd7Zt5+WBII4DuPutu76h2yXmYGuFZVdoogICoVYIkJfQcdpev9voYMa6ThgOju71vNcBb+w+Ln4015+1NE/iiz9vp8l0P0f3m7/KfR46WPrjOJIL7KhW6/4Cej+D28PQHdHXYu5Z+hAD3N4u3LvA51yrWuDDnSfh7dz5z7QKdM1Qge6z8PbhWsf6FToOqED3efh7dKxD3Qa6P2EDnT78Pbo2Ac6pe3w0IGu1FRKIUrP/3i7c+wDnTIdHDrQS/PdaG5+6OPwdhoQej+a198D6NTT4aEDXZh1TZSS8s2D+SDQEz0v2QPoVNQMHegO8y9Svgrx7mUf6NSuATrQpdk89UvzQLejrm4odKDbXSv1LOVYiJ33gc5v4tpZMqtfGXSgT43VNuaFKLfaBzrfuXdSa8A7dKAr46/RyqkO6HYU6eUO01Yg6ED3n1i/D3Tq6OXyVgDoQB+ZShqu3wc66ZW6IaAD3VTThvtAB3rLB3QCOtCBDvTSVNKkQdCBDnSgC1NJqkHQgQ50oI//PnSgAx3o0lSS9AAd6L1BkkWziiROq/VnbyZ5vP1DWLxLkceBoNvPq/kBHehf7J1fjuQmEMbbhH8GgSHuvsM85QYbaROtVqvsCfISycn9zxBlVxP3gKmvsMdSZzL1akPRuH7UZ7psRxMKImwe8SOfE7vyNG35VCVgyaHal5pZPxUVruJk0PnzdVE89wb+0a/LjuxDg/7xHNC/HAL9HXQtw7JlwaPyk6WRyPCJWqpNn0Nkg97sZvgHOSe+WXlMrDbuBd01xm49LMAV8Ak7y3sdVvo/gj6/DuiuDoDjoItn26ftwJCOgF4jh1H35QnFcZz6sU8r+KDHRjdyvUyv/vSalsv++ZKYYscq2XeP/s64p3n+cr3ebr89AOjE13pMEi3o/p1zI+5sq09jX1IzSNEB4CgHddd4Sm4n6FqupusOAkmDHSkFuQIMAjz2+Jw0D3Q9tSHWZ4EeFd2p61fcBufqcsLCf+nlkL/O8/X69XY7XBf7dAx0nTbjTk3+JRYkEKDPlYzIUxc5YGlYg44AMYwXsJBJ2/C0e0mg6vOpRg7o2lILVD4HdDx2T4150fDdGJajkPJDg46Z/2kX6If8a0MEnHG7QNdSkfIOmTOttrEfdENwTuTE7VaRpd010QXPp2eAbmkpcgboeliwZWpTMuL7b8dQSOLRQcc2zz9frx9X5k8GPSkQDa4f9Aj6DPRl0hnLWj7oksgVVU7EpKtyPCzlPnb79AB0ZP4E6c6eL5yKKZWU8Cnqbb3XfZ4/X6+fbjdcAcv335/Rsu4EHYQY2scbLZC1TdABc1bvRccQ0lUzlHuojmHzAHTU+gTQMec1zRbfpCt8SigvyFv9gMPvFPM37P/QCh3GLtAND52WeYUR4IM+rs2UI/IEsFR0SKdeTaxrme1zPAC6P2XX3fD9dyyMsWrt4Ivv4lsEHW7bf8L+j63QuQd0w+0TZWBMOgZ9VIUSQK4wdRZrd9+O3Mh3GfRu0P3lDNBTz3zBhZEImAQ96zcHOmb+6+0zyz9UmEOWUQiRZB7UZvYdvltY/y67s0bGsoP8blMZppHH+TcHtkE6Al0HYvtGq4VvgQg6qNztPp/TXtDT5QzQXc/YLV91q7oxmtDpEUtgH9d/bBdkOT8VnOOCmVpkmfgCApHv0VIaNV8G77bbLgKAXisWD4QoMtncXvJQufudPsWBHYXjoAPagKXWNIc6CqF2V0fK4t5BD2Qxlk5h5RyDXuNjHF2ElsH3AI1rtjW8jG6o0HBLlynNTi++mfPFJm9ZyrU2iGBi4HJ+Cuhi53xFQLFZFqTdR2ZZ3DvoQCUbve1AqpUpAHrVrYpgSx1o3iBqNIeCcwB6LoMfJ3Q1ZGm2gZItjhVKfYZANfhnIMRGxvQs0AdzP2ZzOQf0qXO+Uisd+ypbI+2eiMPQ3kG3eN7cYPpr3f269UXfNiciaUy6LRcyb9fdk5zrpbbpWdjEgUivWoHdhup4W0RIujDWItDXlUL7QoAdfnoNCyDzfJG93RgYue6B3UlH/nD56KD/8uMp9scu0PU+IYRBv3hVcN6g2bbvJQzx9KcHBTN1BFnN+oJJJA+vvJoqcsnQVe2yD4HqUQQCPRcKxlxeC3Q8X4Ker7GhgAJjpySRv+Fv9s41wZHUBsCGgHgFKPZIucb+673/HZKZScbdLVQSph6dXvTXFC7LfCCEJMKXBB19dLj8IQOdAsEdnqYabBLdHQLUEuyB/vIki4wLdr+3ygTiJJopvW+7O/Qca8SSxoJjQE+fFOhOqzDjX9YXEJwinVCmjJYktCzQWV7L8fnoUXbtnybGkt15PjCx7ggZojfOxf3YaNdY3rXdLTWuC70aM3MIBXpDyjkLdGD1ZRCs1HtvgjsgI9Hz8Mq0QHdIp1cVnsh9Ay2IT0940MGjlYfxIbuB2hFt79lCzg+O8Evvwaz3QM9wWc24wusLeRioKbMKkuE2QifSlWmBjtV3eYUZ1+/APdGYBl0hVLj1J4ozprBjyspSNCxChZ+A2h7o6dzikPP64tWVyYCbp3ythJYF+ngHtW/ypmnQHQuDE5zYWNLZ63fWGEsREUQupYyQI0G3cAHofPAAH9bi8S/HOqGjhufC4hbot5jumE3EQZ7ubOuagOITG967nmg7tpDMbKKFqdFgKgTbFaDL72qslE4bfhh/Im6TJuBczrjbQMfdttnOksBvYwWFDDaSWaCtSceEv44WoQrM5HQR6JLCD4bqJZDdZ0GwvD8moWWBXm8FHQ9jPdlZkPhnJelQmjbvK2m7W9K8ViJMNSKKBL3cCLrk1RU5reK/irbdQVr9ZoHOjSh9J+iYkInOqAN0/rRosFGhbHeNPqBGu5GRaWjQ9XWgB8lRdhBHCumuVV67tnuZS2hZoD/QQfOtoMffdM51Bh5xLl58eEjIhZvaUBayN2f68tVAn9cXhtX0LHcLXfupTSa0LNArCv68AXSMXp3qDDwz90+CzgGdyZUvvL0k7huATvUfPv3SiommNYplgc4PdpXgZtA3pldhZw7tjydAVwgSElvXp7khVkZFfQvQa9cl0j7Nlaljo8epOs8LdDxwfDVGa30X6GYedLzpOxh0TZ932/5CH74p6GZwYkxdAyh/0mDPdk9zCS0LdLo2kFXKmU3HWdC1qXSpBBr0MgE6Gk/ngb4RQxeN1W8BepkEHfC6jC33R892d3NhcQt0vlKhrSkKQWdvCuVBr4imcdALEww+u0Lpnfxs17Pct+8CunkJdCADbnzHckcTdUJTpyyhZYE+XnK16pdAT3l0ED/UPOgBzy3tJNDxtjP3LHf4e4OuaQMIkOWOF/6K5lPG3lugkxJYIlUQgI5LPt0AerfCqj4DdHLzmIngt7WiI2Cx5Y5nT+hNEEJZoONyjYykQdC1fbsDdO+f2D7HZT5rj/4Ai4yHQGhu7dGxCd6x3Hu2eyWmzq8N+h//OEX+NXfJ4uYZHt1occiLQcfvC/kJ/VmgPxyy3Rt2HP2tvO6eBB3pJmPLvWu728mEllUcEt9kTssmBh2val4h8eeC7j9SFY4Dfb+P8PB4glzn6MS4iBHrCtvu6KkF+vT3B12MaUr1du1BDDq8f7ymOJpCPg+6h48Dxh8bGUdboy0iEPdYcUYk6XuAjtfmretkS0QjPjx6gT4uUafmEQci0A26gGE0YCbNgW7j5xiB7RzQsTW67QZrwotp1d8CdLzTcR5b7th2r5N1nhfovESDlnQedHgCp6+MjMMV4rZ36B+avUZ7krF3jk9L4+UbZK/1/HkZW+78xU9hgX7G90eP/ggOSYP+EynoheBjEPTS8Qypg/PR0Vf0Je63dleBfn8+On8ZbyF8uacmtCzQ8YY7C0HP6LPh7DU1A3rqri/bcRVm5AcMnuHUXwT6/RVm+LXaEmbUyQktC3RMEYhAj3TiGMv070cnQG/9LbSFg2vG4UGJJXEcxGtAv79mHD8tOqKXk8PiFuj4/9UM6Jz9zYPuOQB40B11h0M9tgqsaEMJbNDJBaDfXwX2KVFGcGLW/WNlgY594Rh0unkRg47RS6+C7mmyCl+nnE/50XwTTAI90PMVoN9f1/0pXkQwMCqdkAU6j5EZAz2Mg54QIoOge6DJsDB+U4sSOOzsiJnppUs6lJtB94fc1AKMz4Poq9KboXtlgY7/I5mZoPoLXnwJdBv2Eu7bEXevYWkjZmYTnhYF+5buBR23Avaoa2O9kUE2KSZmM3S/LNCVCPTWtxC9fPMq9dYbmgrF3A4aLOHzlY1dJ2lsA5kUZO4FPQhuUwU0Ujh9ZdGkCGQw8GmyQN+YPTqFcBR5+FT/u2ycBh0PrQxD930nK/P55pHQjkx/JVKvuxX0KrkfPTD3o0vtH0fYhdfVeV6guzGvu5GMwUjM0YCG2QToeJ0x/Lrh/oenVtJojW0ktMPghg2okh3uQtDxem3of60T5Fxk+tKk5S6x3eOXBP1+4UEHBwxFYPfO0R097Bu/RcdsOoHbJShgQCeP0QL6BEuuxhjVdbEZataSN4ZOx9aVJwgtv8foQtAr5rSZX6JRE6wv6QJsRe4MYAKQxmSBDv7NB+Hpmkdo4Tkbf8SNdkVBY8OD9FN5IEDn2PLoXXnha0crfvXB+uym8iLD3l0H+kYrwByoLydzZ9QDw+IW6ODZqxtCV8txZ9cq2FA52r3iOqRjD5mPDOiUHWjwcJKLGSm7p5hJTijuMtCj4IereX0V2UFkOiqhZYH+vNLEAc257a9QmS6yWtk12SEeuhzY1BsnFvetObgUlcYWR6jLMMJuYpybUnGng85TbNjJQO6kAMZyZ5qNywId/G+kDLB2pkOsErNEYtJUoxeXJqvxM1INzSIS0AP6PhF1Yqjc0ImvGiT9KtATA/qovoLUF/DmxM3GZYEOHvmDPgps+V2DSKGTE32C5CKd4o7Bw9RYFz68kEUnO7KsN0M6iNy4IYql0HjOG+/pKtAfmQF9bLOzyeeTIm0mlgU6bbbaavRveEIxCv1t1Iizypkf0vuLvNG/YY/aKH4rC/6T6zdp/Yham4rKyIhBh0x5iMDLF1Za8tCgDHaI88tA1wzoc/qizX8rNPE57BboQwXdvSeGOTsoaNvUKs/EOknZ40x3fs2t4m+Tm42NGLvTpNtwvjOOj+Y1h+rLy9rWwxJaljNOvFt0okExYJtaxOYYe551xtHDpjCk85zzq1R7yEjnf+aVoD88D/q8vjaZ9ZOOS2hZ5+ibbMA1mU9JPo592WUTKvc8PAZBj5Y+3nXS/aackMCX6BKIg8e1oIMXuCdgUl9BZv3AVFjcAn386iRbhPaA+JqnChybGzvx0KCzPTrizI6SHFiWxmsSG5aWXK6JdecnPTOkLyYGS3xpYh3W6QJ9RzSHugHpWBWuyXZj2GRmoKwFse5Y/A4e0HZe1whYgvHki0gsjOjI81LQHyUzoHOLumV/fJP5LdOwThfouxKbpaEysPdkpQeQpoxTF2Vs6kq8EZfUwvuUMzBKQApgpb5gZUZHKj5vcFnhCf4eXMO/O35xWrTMbwmTYXELdCy69bD0rfA3OVVLDSDtMuamRTmbEV8JVxOXvUZL23c6QKqfuctOfHRbXvMPF5d7eg9XlpLCEraaEegSfTUt4sPK/HaVibO7X/7855eSP0UK0Mk4pZT6lWBhNg3yW11+SeeT8rPP/GaVUtU8r2cC/V9h5mnQPzrwP59vG/oGpjPUjGsYkvn5ul6paspYmZt3MvQgaGN+3UaneL0H/VFA/mpPGf5F8cHryw3oK8iUFd83C/9uBw4IAAAAEAT1f3VDhJUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH1zxFFGhajFcAAAAASUVORK5CYII=";
$data = explode(";", $image);
$type = str_replace("data:", "", $data[0]);
header("Content-type: ".$type);
echo base64_decode(str_replace("base64,", "", $data[1]));
Который выведет логотип stackoverflow.
Тем не менее, некоторые JavaScript сделает вещи проще, потому что вы можете изменить источник изображения «на лету«С помощью сценария php, если вы обнаружите Internet Explorer. Но так как вы говорите, что это не вариант, вы должны сделать это на стороне сервера.
Других решений пока нет …