如何从文本中提取base64图像?我尝试使用简单的html dom库,但无法从文本中提取它。我需要提取每个base64并将其转换为图像,然后将其保存到公用文件夹。
代码:
$post = \App\Post::find(45);
$dom = HtmlDomParser::str_get_html( $post->content );
foreach ($dom->find('data:image') as $element) {
dd($element);
}
<p style="text-align:right"> Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to ma</p>
<p style="text-align:right">data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB .... == </p>
答案 0 :(得分:0)
我认为这可能是重复的,具体取决于您是否要先将图像保存到服务器,请参阅Kerwin或linktoahref的回答
Laravel return image preview from base64
$image = imagecreatefromstring(base64_decode($results->getBase64Image()));
header('Content-type: image/png');
return imagejpeg($image);
答案 1 :(得分:0)
我的问题的解决方案是:
use Illuminate\Support\Str;
use Intervention\Image\Facades\Image;
use PHPHtmlParser\Dom;
$posts = Post::where('content_edited',0)->orderBy('id','asc')->take(100)->get();
foreach ($posts as $post)
{
$dom = new Dom;
$dom->loadStr($post->content);
$imgs = $dom->find('img');
if ($imgs->count() > 0 )
{
$i =0 ;
foreach ($imgs as $img)
{
$image_src = $img->src;
$result = Str::contains($image_src, 'data:image');
if ($result)
{
preg_match("/data:image\/(.*?);/", $image_src, $image_extension);
$image_src = preg_replace('/data:image\/(.*?);base64,/', '', $image_src); // remove the type part
$image_src = str_replace(' ', '_', $image_src);
$imageName = 'image_' .$i.Factory::create()->uuid . '.' . $image_extension[1];
Image::make(base64_decode($image_src))->save(public_path('/photos/inline/') . $imageName);
$tag = $img->getTag();
$tag->setAttribute('src','/photos/inline/'.$imageName);
$post->content_edited = 1;
}
$i++;
}
$post->content_edited = 1;
$post->content = $dom;
$post->save();
}else{
$post->content_edited = 1;
$post->save();
}
}