我正在使用图片上传和从某人博客调整脚本大小。它将文件的名称存储为resize.jpg
。但是我想给它们提供唯一的名称,因为数据会进入数据库......我使用函数非常糟糕,所以请指导我。
<?php
class SimpleImage {
var $image;
var $image_type;
function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {
$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}
function output($image_type=IMAGETYPE_JPEG) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image);
}
}
function getWidth() {
return imagesx($this->image);
}
function getHeight() {
return imagesy($this->image);
}
function resizeToHeight($height) {
$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
}
function resizeToWidth($width) {
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}
function scale($scale) {
$width = $this->getWidth() * $scale/100;
$height = $this->getheight() * $scale/100;
$this->resize($width,$height);
}
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
}
?>
<?php
if( isset($_POST['submit']) ) {
include('SimpleImage.php');
$image = new SimpleImage();
$image->load($_FILES['uploaded_image']['tmp_name']);
$image->resizeToWidth(300);
$image->resizeToHeight(200);
$image->save('images/resize.jpg');
//$image->output();
} else {
?> <form action="" method="post" enctype="multipart/form-data">
<input type="file" name="uploaded_image" />
<input type="submit" name="submit" value="Upload" />
</form><?php
}
?>
答案 0 :(得分:1)
在此块中,您将每个保存为resize.jpg
$image->resizeToWidth(300);
$image->resizeToHeight(200);
$image->save('images/resize.jpg');
您可以使用uniqid()
生成唯一名称,并可选择在img_
上添加前缀。您的文件名将如下所示:
'img_4e297753130db.jpg'
首先生成保存在变量中的文件名。
$prefix = "img_"
$new_filename = uniqid($prefix) . ".jpg";
// Do your other processing
// ...
$image->resizeToWidth(300);
$image->resizeToHeight(200);
// Save with the new filename
// Note change to double quotes from single...
$image->save("images/$new_filename");
稍后,当您准备将文件名存储在数据库中时,它仍可在$new_filename
答案 1 :(得分:0)
图像名称在此行中设置:
$image->save('images/resize.jpg');
您需要确定如何命名输出文件,并修改该行以生成所需的输出。
如果您可以提供有关您的陈述的更具体的详细信息“我想提供唯一的名称”,请更新您的问题。