Quando si tratta di una grande quantità di immagini, è spesso utile per memorizzarli in un database. Questo rende l'accesso e modificare le immagini facile e snella, anche quando è necessario cambiare più di uno alla volta. Un compito comune eseguito su immagini memorizzate è per ridimensionare l'immagine. Caricamento e ridimensionamento di un'immagine utilizzando PHP e MySQL può essere molto semplice, e permette di fare molte cose, come creare un batch di miniature per la tua galleria di immagini, o semplicemente visualizzare una data immagine in un formato diverso da quello originale.
Istruzioni
1
Creare il database e la tabella in MySQL. Utilizzando l'interfaccia di MySQL, eseguire i seguenti comandi:
Prova di CREATE DATABASE;
Test d'uso;
CREATE TABLE immagini (
image_id serial,
filename varchar(255) not null,
mime_type varchar(255) not null,
file_size int not null,
file_data longblob not null,
primary key (image_id),
index (filename)
);
2
Utilizzare un editor di testo per creare un file denominato "image_upload.html" e riempirlo con il codice riportato di seguito. Questo sarà il modulo selezionare l'immagine con.
< html >
<head>
<title>Upload an Image</title>
</head>
<body>
<div>
<h1>Upload an Image</h1>
<form method="post" action="image_insert.php" enctype="multipart/form-data">
<div>
<input type="file" name="image" />
<input type="submit" value="Upload Image" />
</div>
</form>
</div>
</body>
< / html >
3
Creare un file denominato "Connect. php" e riempirlo con il codice riportato di seguito. Questo sarà lo script che consente di utilizzare il database il vostro altri file. Utilizzare il proprio nome utente e la password al posto dei valori "$un" e "$pw" incluso.
<? php
$host="localhost"; $un="root"; $pw="password"; $db = "test";
$link = mysqli_connect($host, $un, $pw, $db);
if(!$link){die('Damnit, link not established.'); exit;}
$db = "test";
$db = mysqli_select_db($link, $db);
if (!$link) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
if (!$link) {
echo "Unable to establish connection to database server";
exit;
}
if (!mysqli_select_db($link, 'test')) {
echo "Unable to connect to database";
exit;
}
? >
4
Creare un file denominato "image_insert.php" e riempirlo con il codice riportato di seguito. Questo file sarà prendere i dati di immagine che inviamo dalla forma e posizionarlo nella vostra tabella di immagini. Se non c'è nessuna immagine passata a questo file, verrà restituito un errore per te.
<? php
require_once('connect.php');
if (!$_FILES['image']){die('No Image!');}
$image = $_FILES['image'];
print_r ($image);
$query = sprintf(
"INSERT INTO images (filename, mime_type, file_size, file_data)
VALUES ('%s', '%s', %d, '%s')",
mysql_real_escape_string($image['name']),
mysql_real_escape_string($image['type']),
$image['size'],
mysql_real_escape_string(
file_get_contents($image['tmp_name'])
)
);
if (!$result = mysqli_query($link, $query)){die('Shit happened when trying to insert into the table' .mysqli_error($link));}
$id = (int) mysqli_insert_id($link);
header('Location: image_view.php?id=' . $id);
exit;
? >
< html >
<head>
<title>Error</title>
</head>
<body>
<div>
<p>There was an error in your code, or the file could not be uploaded for another reason. </p>
<p>
<a href="image_upload.php">Go Back</a>
</p>
</div>
</body>
< / html >
5
Creare un file denominato "image_view.php" e salvare il codice riportato di seguito in esso. Questo file sarà tirare l'immagine dal database e mostrarlo a voi in qualunque dimensione che si desidera. Il codice qui sotto è l'immagine visualizzata a 500 x 500 pixel.
<? php
require_once('connect.php');
$desired_width = 500;
$desired_height = 500;
$id = (int) $_GET['id'];
$query = "SELECT * FROM images WHERE image_id = $id";
$result = mysqli_query($link, $query);
$image = mysqli_fetch_array($result);
mysqli_close($link);
$blobcontents = $image['file_data'];
$im = imagecreatefromstring($blobcontents);
$new = imagecreatetruecolor($desired_width, $desired_height);
$x = imagesx($im);
$y = imagesy($im);
imagecopyresampled($new, $im, 0, 0, 0, 0, $desired_width, $desired_height, $x, $y);
imagedestroy($im);
header('Content-type: image/jpeg');
imagejpeg($new, null, 85);
? >
6
Individuare il file image_upload.html e fare clic su "Scegli File". Selezionare il file dal computer che si desidera caricare. Fare clic su "Carica File". Il software salva il database e quindi Visualizza l'immagine a voi nel formato che hai richiesto.
Consigli & Avvertenze
- Modificare i valori di $desired_height e $desired_width nel file image_view.php cambierà la dimensione dell'immagine quando viene visualizzato.
- In alternativa, si potrebbe creare campi per questi valori nel modulo di caricamento e passarli alla pagina finale per rendere lo script più dinamico.