我的主题中有一个函数,可以在base64中对图像进行编码,这非常有效:
function image_encoded($img){
//set the extension of the image
$filetype=wp_check_filetype($img);
// Read image path, convert to base64 encoding
$imageData = base64_encode(wp_remote_fopen($img));
// Format the image SRC: data:{mime};base64,{data};
$src = \'data:\'.$filetype[\'ext\'].\';base64,\'.$imageData;
// return the url of the image encoded in base64
return $src;
}
现在,我想在将图像保存到数据库之前对其进行编码,但此代码不起作用:
function save_page_or_post(){
global $post;
if(isset($_POST["_thumbnail_id"])) {
$thumbnail_compressed = image_encoded($_POST["_thumbnail_id"]);
update_post_meta($post->ID, "_thumbnail_id", $thumbnail_compressed);
}
}
add_action(\'save_post\',\'save_page_or_post\');
最合适的回答,由SO网友:nibnut 整理而成
抱歉耽搁了疯狂的一天。。。
所以我看了这个并测试了一些东西。我认为最性感的方式是尝试返回base64编码的img src。。。来源(非双关语)
看看image_downsize filter - 我相信您可以在那里按需执行,或者,如果性能出现问题,您可以在db中缓存字符串。(因此,首先请求图像生成base64字符串,并将其保存在db中)
我的初步测试是决定性的-这将管理通过WYSIWYG编辑器添加到内容中的图像,以及主题功能包含的图像。
顺便说一下,如果您感兴趣并允许我重复使用您的编码代码,我很乐意将其制作成一个开源插件。。。
哦,还有最后一条评论:base64字符串中有一个小错误:
$src = \'data:\'.$filetype[\'ext\'].\';base64,\'.$imageData;
应该是
$src = \'data:image/\'.$filetype[\'ext\'].\';base64,\'.$imageData;
希望这有帮助!