gpt4 book ai didi

php - 从 mysql 存储的图像创建缩略图

转载 作者:太空宇宙 更新时间:2023-11-03 11:10:23 24 4
gpt4 key购买 nike

我有一个名为 users 的表,每一行(用户)都有一张图片。

使用以下代码将图像作为 BLOB 存储在 mysql 数据库中:

$filename = $_FILES['image']['tmp_name'];
$size = getimagesize($filename);
$handle = fopen( $filename , "rb" );
$content = fread( $handle , filesize( $filename ) );
fclose( $handle );
unlink($filename);
$image = base64_encode( $content );
// .... send query to database ....

这起初有效,但随着越来越多的图像必须在每个页面上显示,它真的加载了,所以现在我想创建缩略图,使用 php GD 保存在服务器的文件系统中。

我有以下代码,但我不知道如何从数据库中读取图像以便创建缩略图。

$query = "SELECT * FROM users;";
$result = mysql_query( $query );
while( $row = mysql_fetch_array( $result ) ) {
$uploaded_image = base64_decode( $row['image'] );
$size = getimagesize($uploaded_image); <--------------------
$dimension_x = 73;
$dimension_y = 73;
$directory = 'views/images/generated/people/';
do{
$filename = random_32();
$filename = $directory.$filename.'.jpg';
} while( file_exists($filename) );
$image = imagecreatefromjpeg( $uploaded_image );
$thumb = imagecreatetruecolor( $dimension_x , $dimension_y );
$size = getimagesize( $uploaded_image );
imagecopyresampled( $thumb , $image , 0 , 0 , 0 , 0 , $dimension_x , $dimension_y , $size['0'], $size['1']);
imagejpeg( $thumb , $filename , 100);
}

我正在尝试找到我应该在箭头所在的位置放置什么以使脚本工作。

它现在所做的就是输出

Warning: getimagesize(ÿØÿà): failed to open stream: No such file or directory in /var/www/play/ns4/models/create_thumbs_people.php on line 12

对于数据库中的每个条目。

---- 编辑----

忘了说,random_32() 是一个函数,它生成一个 32 个字符长的随机字符串,以便为图像命名。

最佳答案

这就是为什么将文件存储在数据库中不是一个好主意的众多原因之一......

getimagesize() 适用于文件,不适用于字符串。由于您在字符串中获得了原始图像,因此使用 imagecreatefromstring() ,然后是 imagesx() 和 imagesy() 函数来获取尺寸:

while( $row = mysql_fetch_array( $result ) ) {
$uploaded_image = base64_decode( $row['image'] );
$image = imagecreatefromstring( $uploaded_image );
$uploaded_x = imagesx($image); // X dimension
$uploaded_y = imagesy($image); // Y dimension
etc....

请注意,imagecreatefromstring 实际上有一点聪明,可以找出图像的类型,这与相当愚蠢的 createfromgif/jpg/png/etc... 函数不同,后者仅适用于那些特定的文件类型。

关于php - 从 mysql 存储的图像创建缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9050285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com