Ben sizin sorularınızı cevaplamak için girişimi için gidiyorum:
Question 1
Bu kısım aslında basit. Bir dosya yükleme formu oluşturmak için, HTML böyle bakmak gerekiyor:
<form enctype='multipart/form-data' action='CodeTool.php' method='POST'>
File: <input name='picture' type='file'/>
<input type='submit' value='Upload'/>
</form>
Kişisel bir şekilde enctype='multipart/form-data'
ve method
olması gerekmektedir olması gerekir POST
. Ardından, yükleme dosyasını okumak için, sadece aşağıdakileri kullanabilirsiniz. Ben de dosya bir görüntü olduğundan emin olmak için bazı temel doğrulama ekledik.
if(isset($_FILES['picture'])) {
echo "File has been uploaded under temp file " . $_FILES['picture']['tmp_name'];
// Let's check if the file is an image:
$fileData = file_get_contents($_FILES['picture']['tmp_name']);
// Using imagecreatefromstring, that way you don't need to
// guess the image format.
if(($img = @imagecreatefromstring($fileData)) !== FALSE) {
echo " and is a valid image";
} else {
echo " and is not a valid image";
}
}
Question 2
Bir küçük resim oluşturmak için gibi, sen GD kullanabilirsiniz (veya ImageMagick, ancak varsayılan yapılandırmasına dahil değildir) ... Hadi imagecreatefromstring
if
deyimi devam edelim:
if(($img = @imagecreatefromstring($fileData)) !== FALSE) {
// Let's create a 100x100 thumbnail
$width = imagesx($img);
$height = imagesy($img);
$boxSize = min($width,$height);
$boxX = ($width / 2) - ($boxSize / 2);
$boxY = ($height / 2) - ($boxSize / 2);
$thumb = imagecreatetruecolor(100, 100);
imagecopyresampled($thumb, $img, 0, 0, $boxX, $boxY, 100, 100, $boxSize, $boxSize);
//$thumb is now a 100x100 thumbnail
}
Question 3
Burada 2 seçeneğiniz var. Ya dosya sisteminde veya veritabanındaki görüntüleri depolamak. Dosya sisteminde görüntü saklamak için, aşağıdakileri yapabilirsiniz:
if(($img = @imagecreatefromstring($fileData)) !== FALSE) {
move_uploaded_file($_FILES['picture']['tmp_file'], 'somefile.jpg');
// the code from the previous example
imagejpeg($thumb, 'somefile_thumb.jpg');
}
Ben şahsen başvuru bütünlüğünü korumak için daha kolay ve yedekleme basit hale getirir (yedek veritabanı ve yapılır) gibi görüntüleri depolamak için veritabanı kullanmayı tercih. Biraz daha yavaş, ama fark gerçekten büyük değil:
if(($img = @imagecreatefromstring($fileData)) !== FALSE) {
// the code from the previous example
$tmp_thumb = tempnam(sys_get_temp_dir(), 'thumb');
imagejpeg($thumb, $tmp_thumb);
$thumbData = file_get_contents($tmp_thumb);
mysql_query("INSERT INTO images (original, thumb) VALUES ('" . mysql_real_escape_string($fileData) . "', '" . mysql_real_escape_string($thumbData) . "');");
}
Alanlar olması gerekiyor BLOB
.