Re: Image Resizing Script required - a better one...
Posted: Tue Mar 07, 2017 12:11 pm
So what is it doing? Is there anything in your error log? I can't run this file, so I need you to explain how and where it's failing.
A community of PHP developers offering assistance, advice, discussion, and friendship.
http://forums.devnetwork.net/
Code: Select all
$target_directory = $_SERVER['DOCUMENT_ROOT']."/images/pages/";
$random = (rand()%99999999);
$pic=($_FILES['homeimage']['name']);
$newname="$random"."$pic";
$target = $target_directory . $newname;
Code: Select all
$new_filename = "{$prefix}_{$pathinfo['filename']}{$key}.{$pathinfo['extension']}";
$image->resize($scaled_box)->save($target_directory . '/' . $new_filename);
Code: Select all
// ADD ALL BANNERS (SQUARE AND DOUBLE)
if ($update == "addbanner")
{
if (isset($layertype))
{
$result = mysql_query ("SELECT id FROM products WHERE romancode = '$searchurl'");
$num_result = mysql_num_rows($result);
if ($num_result > 1)
{
$disableupload = "yes";
echo "<script>
window.location.replace('/a_home&status=duplicatecode')
</script>";
}
}
if (!isset($disableupload))
{
if ($stockbanner == "yes")
{
if ($searchurl != "")
{
mysql_query("INSERT INTO homepage (url, section, freetext, priority, content, homepromocolor, homepromotextcolor, stockbanner) VALUES ('$searchurl', '$section', '$freetext', '$priority', '$content', '$homepromocolor', '$homepromotextcolor', '$stockbanner')");
}
elseif ($searchurl == "")
{
mysql_query("INSERT INTO homepage (url, section, freetext, priority, content, homepromocolor, homepromotextcolor, stockbanner) VALUES ('$url', '$section', '$freetext', '$priority', '$content', '$homepromocolor', '$homepromotextcolor', '$stockbanner')");
}
echo "<script>
window.location.replace('/a_home')
</script>";
}
else
{
$target_directory = $_SERVER['DOCUMENT_ROOT']."/images/pages/";
$random = (rand()%99999999);
$pic=($_FILES['homeimage']['name']);
$newname="$random_"."$pic";
$target = $target_directory . $newname;
if ($searchurl != "")
{
mysql_query("INSERT INTO homepage(url, image, section, freetext, priority, content, homepromocolor, homepromotextcolor, stockbanner) VALUES ('$searchurl', '$newname', '$section', '$freetext', '$priority', '$content', '$homepromocolor', '$homepromotextcolor', '$stockbanner')");
}
elseif ($searchurl == "")
{
mysql_query("INSERT INTO homepage(url, image, section, freetext, priority, content, homepromocolor, homepromotextcolor, stockbanner) VALUES ('$url', '$newname', '$section', '$freetext', '$priority', '$content', '$homepromocolor', '$homepromotextcolor', '$stockbanner')");
}
require_once dirname(__DIR__) . '/vendor/autoload.php';
$imagine = new Imagine\Gd\Imagine();
// An array of widths, keyed by target screen size
$widths = [
'475' => 237,
'768' => 384,
'1920' => 451,
];
// If we have an uploaded image without errors
if (!empty($_FILES) && isset($_FILES['homeimage'])) {
$pathinfo = pathinfo($_FILES['homeimage']['name']);
// Open the uploaded image with the Imagine library
$image = $imagine->open($_FILES['homeimage']['tmp_name']);
// Save the original
$image->save($target_directory . '/' . $pathinfo['basename']);
// Get image size
$box = $image->getSize();
// Resize
foreach ($widths as $key => $width) {
$ratio = $width / $box->getWidth();
$scaled_box = $box->scale($ratio);
$new_filename = "{$random}_{$pathinfo['filename']}{$key}.{$pathinfo['extension']}";
$image->resize($scaled_box)->save($target_directory . '/' . $new_filename);
}
}
//Writes the photo to the server
if(move_uploaded_file($_FILES['homeimage']['tmp_name'], $target))
{
echo "<script>
window.location.replace('/a_home')
</script>";
}
}
}}
}Code: Select all
// ADD ALL BANNERS (SQUARE AND DOUBLE)
if ($update == "addbanner")
{
if (isset($layertype))
{
$result = mysql_query ("SELECT id FROM products WHERE romancode = '$searchurl'");
$num_result = mysql_num_rows($result);
if ($num_result > 1)
{
$disableupload = "yes";
echo "<script>
window.location.replace('/a_home&status=duplicatecode')
</script>";
}
}
if (!isset($disableupload))
{
if ($stockbanner == "yes")
{
if ($searchurl != "")
{
mysql_query("INSERT INTO homepageairsoft (url, section, freetext, priority, content, homepromocolor, homepromotextcolor, stockbanner) VALUES ('$searchurl', '$section', '$freetext', '$priority', '$content', '$homepromocolor', '$homepromotextcolor', '$stockbanner')");
}
elseif ($searchurl == "")
{
mysql_query("INSERT INTO homepageairsoft (url, section, freetext, priority, content, homepromocolor, homepromotextcolor, stockbanner) VALUES ('$url', '$section', '$freetext', '$priority', '$content', '$homepromocolor', '$homepromotextcolor', '$stockbanner')");
}
echo "<script>
window.location.replace('/a_home')
</script>";
}
else
{
$target_directory = $_SERVER['DOCUMENT_ROOT']."/images/pages/";
$random = (rand()%99999999);
$pic=($_FILES['homeimage']['name']);
$newname= $random . "_". $pic;
$target = $target_directory . $newname;
if ($searchurl != "")
{
mysql_query("INSERT INTO homepageairsoft(url, image, section, freetext, priority, content, homepromocolor, homepromotextcolor, stockbanner) VALUES ('$searchurl', '$newname', '$section', '$freetext', '$priority', '$content', '$homepromocolor', '$homepromotextcolor', '$stockbanner')");
}
elseif ($searchurl == "")
{
mysql_query("INSERT INTO homepageairsoft(url, image, section, freetext, priority, content, homepromocolor, homepromotextcolor, stockbanner) VALUES ('$url', '$newname', '$section', '$freetext', '$priority', '$content', '$homepromocolor', '$homepromotextcolor', '$stockbanner')");
}
require_once dirname(__DIR__) . '/vendor/autoload.php';
$imagine = new Imagine\Gd\Imagine();
// An array of widths, keyed by target screen size
$widths = [
'475' => 237,
'768' => 384,
'1920' => 451,
];
// If we have an uploaded image without errors
if (!empty($_FILES) && isset($_FILES['homeimage'])) {
$pathinfo = pathinfo($_FILES['homeimage']['name']);
// Open the uploaded image with the Imagine library
$image = $imagine->open($_FILES['homeimage']['tmp_name']);
// Save the original
$image->save($target_directory . '/' . $pathinfo['basename']);
// Get image size
$box = $image->getSize();
// Resize
foreach ($widths as $key => $width) {
$ratio = $width / $box->getWidth();
$scaled_box = $box->scale($ratio);
$new_filename = "{$random}_{$pathinfo['filename']}_{$key}.{$pathinfo['extension']}";
$image->resize($scaled_box)->save($target_directory . '/' . $new_filename);
}
}
//Writes the photo to the server
if(move_uploaded_file($_FILES['homeimage']['tmp_name'], $target))
{
echo "<script>
window.location.replace('/a_homeairsoft')
</script>";
}
}
}}
}Code: Select all
<?php
// Had to initialize these to get things working at all
$update = 'addbanner';
$stockbanner = '';
// ADD ALL BANNERS (SQUARE AND DOUBLE)
if ($update == "addbanner") {
if (isset($layertype)) {
$result = mysql_query ("SELECT id FROM products WHERE romancode = '$searchurl'");
$num_result = mysql_num_rows($result);
if ($num_result > 1) {
$disableupload = "yes";
echo "<script>window.location.replace('/a_home&status=duplicatecode')</script>";
}
}
if (!isset($disableupload)) {
if ($stockbanner == "yes") {
if ($searchurl != "") {
mysql_query("INSERT INTO homepage (url, section, freetext, priority, content, homepromocolor, homepromotextcolor, stockbanner) VALUES ('$searchurl', '$section', '$freetext', '$priority', '$content', '$homepromocolor', '$homepromotextcolor', '$stockbanner')");
} elseif ($searchurl == "") {
mysql_query("INSERT INTO homepage (url, section, freetext, priority, content, homepromocolor, homepromotextcolor, stockbanner) VALUES ('$url', '$section', '$freetext', '$priority', '$content', '$homepromocolor', '$homepromotextcolor', '$stockbanner')");
}
echo "<script>window.location.replace('/a_home')</script>";
} else {
// If we have an uploaded image without errors
if (!empty($_FILES) && isset($_FILES['homeimage']) && $_FILES['homeimage']['error'] === 0) {
$target_directory = $_SERVER['DOCUMENT_ROOT']."/images/pages/";
$random = rand() % 99999999;
$pic = $_FILES['homeimage']['name'];
$newname = "{$random}_{$pic}";
$target = $target_directory . $newname;
/* Commented out since I've no database attached
if ($searchurl != "") {
mysql_query("INSERT INTO homepage(url, image, section, freetext, priority, content, homepromocolor, homepromotextcolor, stockbanner) VALUES ('$searchurl', '$newname', '$section', '$freetext', '$priority', '$content', '$homepromocolor', '$homepromotextcolor', '$stockbanner')");
} elseif ($searchurl == "") {
mysql_query("INSERT INTO homepage(url, image, section, freetext, priority, content, homepromocolor, homepromotextcolor, stockbanner) VALUES ('$url', '$newname', '$section', '$freetext', '$priority', '$content', '$homepromocolor', '$homepromotextcolor', '$stockbanner')");
}
*/
require_once dirname(__DIR__) . '/vendor/autoload.php';
$imagine = new Imagine\Gd\Imagine();
// An array of widths, keyed by target screen size
$widths = [
'475' => 237,
'768' => 384,
'1920' => 451,
];
$pathinfo = pathinfo($_FILES['homeimage']['name']);
// Open the uploaded image with the Imagine library
$image = $imagine->open($_FILES['homeimage']['tmp_name']);
// Save the original
// You probably don't want this as it does not prepend $random
// $image->save($target_directory . '/' . $pathinfo['basename']);
// Get image size
$box = $image->getSize();
// Resize
foreach ($widths as $key => $width) {
$ratio = $width / $box->getWidth();
$scaled_box = $box->scale($ratio);
$new_filename = "{$random}_{$pathinfo['filename']}-{$key}.{$pathinfo['extension']}";
$image->resize($scaled_box)->save($target_directory . '/' . $new_filename);
}
//Writes the photo to the server
if (move_uploaded_file($_FILES['homeimage']['tmp_name'], $target)) {
echo "<script>window.location.replace('/a_home')</script>";
}
}
}
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Image Resizing</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data">
<input type="file" name="homeimage">
<button>Submit</button>
</form>
</body>
</html>
glob and unlink and you're done.simonmlewis wrote:My next job is to dynamically delete all three images, as well as the main one.
In theory, this is just a simple delete script, with a few extra processes for the three others.
That's where glob comes in. Give it a pattern and it will return all the files matching that pattern. You can then loop over the results and delete each file with unlink.simonmlewis wrote:Obviously need to state and break up the files, so it does it for 475, 768 and 1920.
Code: Select all
<?php
$mask = "*.jpg"
array_map( "unlink", glob( $mask ) );
?>