【发布时间】:2019-04-18 02:00:28
【问题描述】:
我有一个 jpeg 图像,我正在尝试使用 javascript 和 php 获取 base64 编码的字符串。
function getBase64Image(img) {
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var dataURL = canvas.toDataURL("image/jpg");
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}
var base64 = getBase64Image(document.getElementById('myImg'));
console.log(base64)
现在,用 php 代码使用相同的图像
$url = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/SIPI_Jelly_Beans_4.1.07.tiff/lossy-page1-256px-SIPI_Jelly_Beans_4.1.07.tiff.jpg"
var_dump(base64_encode(file_get_contents($url));
// The Javascript result:
"iVBORw0KGgoAAAANSUh......LGoT8H4JpIaDthj+xAAAAAElFTkSuQmCC"
// The PHP result:
"/9j/4AAQSkZJRgABAQA......nbKBwJCElGEDnboCdvdE5pDlGThLlNC/9k="
我制作了@JaromandaX 建议的changes in Javascript,现在 Javascript 字符串的开头看起来相似但不是结尾。
var dataURL = canvas.toDataURL("image/jpeg");
return dataURL.replace(/^data:image\/(png|jpeg);base64,/, "");
新的 Javascript 输出: "/9j/4AAQSkZJRgABAQA......A4EhCSjCBzt0BO3uic0hyjccJcpoX//2Q=="
【问题讨论】:
-
您在 javascript 中有一个 PNG,在 php 中有一个 JPEG - 所以,它们当然会有所不同
-
如果您想要 jpeg,请尝试使用
"image/jpeg"类型 - 您还需要/^data:image\/(png|jpeg);base64,/ -
@JaromandaX 我做了你建议的改变(检查 OP),但结局仍然不一样。
-
一个是源文件(PHP)的直接文件......另一个是画布 - 所以,一些“处理”很可能已经完成
标签: javascript php base64