我在数据库内的base64中存储了多个图像。我使用php作为图像路径获取图像。但是我想从base64解码时减小图像的尺寸,因为如果加载完整尺寸的图像,它会减慢我的应用程序的速度。 (我只需要在后端使用全尺寸图片)。
new Container(
width: 50.0,
height: 50.0,
decoration: new BoxDecoration(
shape: BoxShape.circle,
image: new DecorationImage(
fit: BoxFit.fill,
image: new AssetImage('images/lake.jpg')
)
)),
一切都很好用这种方式。我这样使用它:
/*
DB stuff getting base64 string from database
$img = base64 string (can be with 'data:image/jpg;base64,' in front, thats for the str_replace())
*/
if($img){
header("Content-Type: image/png");
echo base64_decode(str_replace("data:image/jpg;base64,","",$img));
}
或在CSS中。出于安全原因,我需要这样做,我无法在服务器上存储任何图像,也无法在路径中包含<img src="http://example.com/getimg.php?id=4" />
变量,因此随机人无法看到图像。
是否可以在不将实际图像存储在服务器中的情况下执行此操作?
答案 0 :(得分:1)
您可以使用imagecreatefromstring
和imagecopyresized
。
实时示例here
<?php
if ($img) {
$percent = 0.5;
// Content type
header('Content-Type: image/jpeg');
$data = base64_decode($img);
$im = imagecreatefromstring($data);
$width = imagesx($im);
$height = imagesy($im);
$newwidth = $width * $percent;
$newheight = $height * $percent;
$thumb = imagecreatetruecolor($newwidth, $newheight);
// Resize
imagecopyresized($thumb, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// Output
imagejpeg($thumb);
}