php 将图片转为base_64位编码格式以及将base64位普通编码转为图片保存到文件中

本文介绍如何使用PHP将远程图片通过Base64编码进行读取,并转换为本地图片文件保存,包括处理图片URL、编码转换及文件系统操作。

public function timeceshi()
{
    // 书写图片所在域名或者地址
    $img = 'http://www.lh.com/uploads/20181119/8760db7392380af20342e07813ad079.jpg';
    // file_get_contents()函数将所在文件读入一个字符串中,即将图片转化为普通字符串
    // base64_encode()函数将图片转化为base64位格式
    $base64_img = base64_encode(file_get_contents($img));

    // base64位编码转为图片保存在文件中
    // 设置生成的图片名称
    $imageName = "25220_".date("His",time())."_".rand(1111,9999).'.png';
    // 判断是否有逗号 如果有就截取后半部分
    if (strstr($base64_img,",")){
         $base64_img = explode(',',$base64_img);
         $base64_img = $base64_img[1];
    }
    // 设置图片保存路径
    $path = "./uploads/code/".date("Ymd",time());
    // 判断目录是否存在 不存在就创建 并赋予777权限
    if (!is_dir($path)){
         mkdir($path,0777,true);
    }
    // 拼接路径和图片名称
    $imageSrc= $path."/". $imageName;
     // 生成图片 返回的是字节数
     $r = file_put_contents($imageSrc, base64_decode($base64_img));
    
}

 

将使用HTTP协议访问的Base64编码图片换为使用HTTPS协议访问的过程主要涉及以下几个步骤: ### 1. 获取原始Base64数据 首先,确保已经获取了通过HTTP传输的Base64编码图片数据。通常,这类数据可能以`data:image/png;base64,`开头的字符串形式存在[^3]。 ### 2. 将Base64解码为二进制数据 在JavaScript中可以使用`atob()`函数来对Base64字符串进行解码。需要注意的是,`atob()`仅适用于标准Base64格式的数据,若数据包含URL安全字符(如`-`和`_`),则需要先将其换回标准Base64字符集[^1]。 ```javascript function base64ToBinary(base64String) { const base64Data = base64String.replace(/^data:image\/\w+;base64,/, ''); return Uint8Array.from(atob(base64Data), c => c.charCodeAt(0)); } ``` ### 3. 将二进制数据重新编码为HTTPS兼容的Base64 由于Base64本身不依赖于HTTP或HTTPS协议,因此可以直接将解码后的二进制数据再次使用`btoa()`函数编码为标准Base64字符串,并添加HTTPS兼容的MIME类型前缀[^1]。 ```javascript function binaryToHttpsBase64(binaryData, mimeType = 'image/png') { const base64String = btoa(String.fromCharCode.apply(null, binaryData)); return `data:${mimeType};base64,${base64String}`; } ``` ### 4. 使用HTTPS URL替换原始HTTP URL 如果目标是将图片嵌入网页并确保其通过HTTPS加载,则应考虑将Base64数据上传至服务器并通过HTTPS提供静态资源服务。例如,在PHP中可以将Base64数据换为文件保存: ```php $base64_string = "your_base64_data_here"; // 替换为实际的Base64字符串 $image_data = base64_decode($base64_string); file_put_contents("secure_image.png", $image_data); // 生成HTTPS访问的URL $https_url = "https://yourdomain.com/secure_image.png"; ``` 这样生成的`$https_url`就可以通过HTTPS协议安全地访问图片资源[^4]。 ### 5. 验证HTTPS访问 最后,在浏览器中测试新生成的HTTPS URL,确保图片能够正常加载且没有混合内容警告。如果图片来自外部源,建议检查证书是否有效以及服务器配置是否正确以避免潜在的安全问题。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值