图片上传,在MySQL中调整存储路径大小
Image upload, resize store path in MySQL
谁知道一个好的PHP教程如何上传图像,调整大小设置尺寸,然后在MySQL中存储图像路径?
您可能需要查看PHP文档:处理文件上传,GD和图像函数。
一般来说,你必须:
- 上传文件(并检查是否真的是用
is_uploaded_file
上传的文件) - 使用
getimagesize
检测图像类型,然后使用相应的imagecreatefrom*
函数创建图像资源($img
) -
像这样调整图像大小:
$thumb = imagecreatetruecolor($width, $height); imagecopyresampled($thumb, $img, 0, 0, 0, 0, $width, $height, imagexs($img), imagesy($img));
-
保存缩略图:
imagejpeg($thumb, 'file.jpg', 85); imagedestroy($thumb); // free memory imagedestroy($img); // free memory
-
将需要的信息保存到MySQL数据库
我用这个函数来做这个,非常简单易用。首先把这个函数放到你可以调用的地方。
public function Resize_image($width = 0, $height = 0, $quality = 90, $filename_in = null, $filename_out = null)
{
$this->Filename = $filename_in;
$this->Extension = strtolower($this->Get_file_extension($this->Filename));
$size = getimagesize($this->Filename);
$ratio = $size[0] / $size[1];
if ($ratio >= 1){
$scale = $width / $size[0];
} else {
$scale = $height / $size[1];
}
// make sure its not smaller to begin with!
if ($width >= $size[0] && $height >= $size[1]){
$scale = 1;
}
// echo $fileext;
switch ($this->Extension)
{
case "jpg":
$im_in = imagecreatefromjpeg($this->Filename);
$im_out = imagecreatetruecolor($size[0] * $scale, $size[1] * $scale);
imagecopyresampled($im_out, $im_in, 0, 0, 0, 0, $size[0] * $scale, $size[1] * $scale, $size[0], $size[1]);
imagejpeg($im_out, $filename_out, $quality);
break;
case "gif":
$im_in = imagecreatefromgif($this->Filename);
$im_out = imagecreatetruecolor($size[0] * $scale, $size[1] * $scale);
imagecopyresampled($im_out, $im_in, 0, 0, 0, 0, $size[0] * $scale, $size[1] * $scale, $size[0], $size[1]);
imagegif($im_out, $filename_out, $quality);
break;
case "png":
$im_in = imagecreatefrompng($this->Filename);
$im_out = imagecreatetruecolor($size[0] * $scale, $size[1] * $scale);
imagealphablending($im_in, true); // setting alpha blending on
imagesavealpha($im_in, true); // save alphablending setting (important)
imagecopyresampled($im_out, $im_in, 0, 0, 0, 0, $size[0] * $scale, $size[1] * $scale, $size[0], $size[1]);
imagepng($im_out, $filename_out, 9);
break;
}
imagedestroy($im_out);
imagedestroy($im_in);
}
现在您可以像这样使用这个函数来调整图像的大小并将其复制到所需的目录。
Resize_image($width, $height, $quality=90, $filename_in, $filename_out)
Example..
Resize_image(150, 150, 90, "Directory".$image, "Directory".$image_without_extension."_thumb.".$image_ext); //makes file_thumb.ext
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 调整窗口大小时,可拖动的对象会出现在容器外部
- ExtJS——在展开/折叠时调整面板高度
- 将作用域存储在JSON中
- 使用javascript存储变量的最安全方式
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 如何有效地将游戏数据存储在URL查询字符串中
- Ember.js-接口状态应该存储在哪里
- 如何解雇“;铁局部存储负载”;事件
- 本地存储中的字符串到字节数组转换
- 从jQuery调用存储在Variable中的函数
- Chrome应用程序调整窗口大小保持纵横比
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- 如何自动调整标签的高度以适应内容
- 导航栏没有调整到浏览器屏幕的大小
- 调整以将输入中的值保存到本地存储时出错
- 存储窗口.innerWidth值,并计算与调整大小时的新值的差值
- 保存图像到本地存储HTML后,调整大小和显示相同
- 图片上传,在MySQL中调整存储路径大小