Jump to content

Image Resize - Skewed Image


ghr

Recommended Posts

I've been working on an upload form which includes uploading an image. I've got it to resize to the correct dimensions, but the images seem to become skewed. Heres an example:

 

http://users.cs.cf.ac.uk/G.Rees/car_images/efrty.jpg

 

Here's the code I've got so far:

 

<html>
<body>

Car<br><br>

<?php

$regestration = $_POST['regestration'];
$manufacturer = $_POST['manufacturer'];
$model = $_POST['model'];
$price = $_POST['price'];
$year = $_POST['year'];
$engine = $_POST['engine'];
$transmission = $_POST['transmission'];
$fuel = $_POST['fuel'];
$mileage = $_POST['mileage'];
$description = $_POST['description'];
$image = $_FILES['image'];


?>



<?php

//define a maximum size for the uploaded images in Kb

define ("MAX_SIZE","500");


//This function reads the extension of the file.
//It is used to determine if the file is an image by checking the extension.

function getExtension($str)
{
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}


//This variable is used as a flag.
//The value is initialized with 0 (meaning no error  found)
//and it will be changed to 1 if an error occures.
//If the error occures the file will not be uploaded.

$errors=0;


//checks if the form has been submitted

if(isset($_POST['Submit']))
{

//reads the name of the file the user submitted for uploading

$image=$_FILES['image']['name'];

//if it is not empty

if ($image)
{

//get the original name of the file from the clients machine

	$filename = stripslashes($_FILES['image']['name']);

//get the extension of the file in a lower case format

	$extension = getExtension($filename);
	$extension = strtolower($extension);

//if it is not a known extension, we will suppose it is an error and will not  upload the file,
//otherwise we will do more tests

	if (($extension != "jpg") && ($extension != "jpeg")
		&& ($extension != "png") && ($extension != "gif"))
	{

//print error message

		echo '<h1>Unknown extension!</h1>';
		$errors=1;
	}


	else
	{

//get the size of the image in bytes
//$_FILES['image']['tmp_name'] is the temporary filename of the file
//in which the uploaded file was stored on the server


		$size=filesize($_FILES['image']['tmp_name']);

//compare the size with the maxim size we defined and print error if bigger

			if ($size > MAX_SIZE*1024)
			{
				echo '<h1>You have exceeded the size limit!</h1>';
				$errors=1;
			}



//we will give an unique name, for example the time in unix time format

		$image_name=$regestration.'.'.$extension;






//the new name will be containing the full path where will be stored (images folder)

		$newname="car_images/".$image_name;




//we verify if the image has been uploaded, and print error instead

		$copied = copy($_FILES['image']['tmp_name'], $newname);


			if (!$copied)
			{
				echo '<h1>Copy unsuccessfull!</h1>';
				$errors=1;
			}
			else
			{

				//new size

				$req_width = 320;
				$req_height = 240;

				// Get new sizes
				list($width, $height) = getimagesize($newname);

				$ratio_orig = $width/$height;

				if ($width/$height > $ratio_orig)
				{
				   $width = $req_height*$ratio_orig;
				}
				else
				{
				   $height = $req_width/$ratio_orig;
				}



				// Load
				$thumb = imagecreatetruecolor($req_width, $req_height);
				$source = imagecreatefromjpeg($newname);

				// Resize
				imagecopyresized($thumb, $source, 0, 0, 0, 0, $req_width, $req_height, $width, $height);

				// Output
				imagejpeg($thumb, $newname);
			}















	}
}
}

//If no errors registred, print the success message


if(isset($_POST['Submit']) && !$errors)
{
echo "<h1>File Uploaded Successfully!</h1>";
}

?>













<?php
$htmlTable1 = ' <table width = 500 border=1 bgcolor="cyan">
<tr>
<th width = "25%">Make:
<td width = "75%">' ?>


<?php
$htmlTable2 = '</tr>
<tr>
<th>Model:
<td>' ?>


<?php
$htmlTable3 = ' </tr>
<tr>
<th>Year:
<td>' ?>


<?php
$htmlTable4 = '</tr>
<tr>
<th>Description:
<td>' ?>


<?php
$htmlTable5 = 'cc, ' ?>
<?php
$htmlTableComma = ', ' ?>
<?php
$htmlTable6 = 'miles: <br><br>' ?>


<?php
$htmlTable7 = '	</td>

</tr>
<tr>
<th>Image:
<td>' ?>

<?php
$htmlImageLink = "<img src=".$newname.">";
?>




<?php
$htmlTable8 = '	</td>
</tr>


</table>



</body>
</html>' ?>



<p> You are selling the following:</p> <br><br>

<table width = 500 border=1 bgcolor="orange">
<tr>
<th width = "25%">Regestration:
<td width = "75%"><?php print("$regestration") ?></tr>
</tr>

<br>


<table width = 500 border=1 bgcolor="cyan">
<tr>
<th width = "25%">Make:
<td width = "75%"><?php print("$manufacturer") ?></tr>
<tr>
<th width = "25%">Model:
<td width = "75%"><?php print("$model") ?></tr>
<tr>
<th width = "25%">Year:
<td width = "75%"><?php print("$year") ?></tr>
<tr>
<th width = "25%">Make:
<td width = "75%"><?php print("$engine cc, $transmission, $fuel, $mileage miles:<br><br>$description") ?></tr>
<tr>
<th width = "25%">Image:
<td width = "75%"><?php print("<img src=".$newname.">") ?></tr>


</table>

<br><br><br>

<a href="Cars_for_sale.php">View Cars for Sale</a>


<FORM METHOD="LINK" ACTION="Cars_for_sale.php">
<BUTTON TYPE="Submit"><FONT COLOR=GREEN>Confirm Sale</FONT></BUTTON>
</FORM>






<?php

$ourFileName = "car_sales/$regestration.html";
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");

fwrite($ourFileHandle, $Line1html);
fwrite($ourFileHandle, $htmlTable1);
fwrite($ourFileHandle, $manufacturer);
fwrite($ourFileHandle, $htmlTable2);
fwrite($ourFileHandle, $model);
fwrite($ourFileHandle, $htmlTable3);
fwrite($ourFileHandle, $year);
fwrite($ourFileHandle, $htmlTable4);
fwrite($ourFileHandle, $engine);
fwrite($ourFileHandle, $htmlTable5);
fwrite($ourFileHandle, $transmission);
fwrite($ourFileHandle, $htmlTableComma);
fwrite($ourFileHandle, $fuel);
fwrite($ourFileHandle, $htmlTableComma);
fwrite($ourFileHandle, $mileage);
fwrite($ourFileHandle, $htmlTable6);
fwrite($ourFileHandle, $description);
fwrite($ourFileHandle, $htmlTable7);
fwrite($ourFileHandle, $htmlImageLink);
fwrite($ourFileHandle, $htmlTable8);



fclose($ourFileHandle);
?>





</body>
</html>


 

 

Also, does this code resize the saved image, or does it just change the display of it on the html page? I'd like it to change the actual uploaded image. Would I have to do much to achive that if it doesnt allready?

 

Thanks,

Gareth

Link to comment
Share on other sites

A friend suggested this code but I can't seem to do anything with it:

 

<?php
require_once 'Image/Transform.php';
$i =& Image_Transform::factory('');

$i->load('test.jpg');
$i->fit(100,100);
$i->save('resized.png', 'png');
?>

 

I inserted it into the "else" where the previous image resize bit was, but no luck.

 

Gareth

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.