Ben PHP için oldukça yeni ve ben görüntüleri yeniden boyutlandırmak bir senaryo yazıyorum.
İlk yüklenmiş bir resim yüklenen dosyanın (dikey / yatay) yönüne bağlı olarak, * yükseklik 800width yeniden boyutlandırılır.
Komut daha sonra bu görüntünün bir minyatürünü oluşturmak içindir. Küçük 117height tarafından 175width gerekir. Bu fotoğraf çekmek kameralar standart bir jpeg görüntü olarak aynı oranda sahiptir, böylece orijinal dosya manzara ise bir küçük versiyonu için görüntüyü kırpmak için gerek yoktur. Yüklenen resim portre yönelim Ancak, ben 175x117px bir minyatürünü elde edebilmek için görüntüyü kırpmak gerekir. Kırparken (sol üst, sağ alt, vb aksine), ben görüntünün merkezini korumak gerekir
Ben büyük sorun bu yapıyorum yaşıyorum ve kimse benim kodu bakmak ve yardım etmek beni dışarı zaman ayırdığınız sakıncası olsaydı ben gerçekten sonsuza dek minnettar olacaktır! : D
Site hybridtempo.net bulunabilir. Lol, ben rasgele veri girmek zorunda kaldı ve fikir bitti veritabanında bazı oldukça rasgele bok olduğunu dikkat edin.
Her şey çok ben 'imagecopyresize', 'imagecreatetruecolour', 'imagecreatefromjpeg', vb işlevleri kullanmaya başlar altına yakın kadar iyi iş gibi görünüyor.
Herhangi bir katkı için çok teşekkür ederiz. :)
Lafı daha fazla uzatmadan:
<?php
//IMAGE RESIZE FUNCTION CODE BEGIN - CODE FOUND AND APPROPRIATED FROM http://github.com/maxim/smart_resize_image/
function smart_resize_image($file,
$width = 0,
$height = 0,
$proportional = false,
$output = 'file',
$delete_original = true,
$use_linux_commands = false ) {
if ( $height <= 0 && $width <= 0 ) return false;
# Setting defaults and meta
$info = getimagesize($file);
$image = '';
$final_width = 0;
$final_height = 0;
list($width_old, $height_old) = $info;
# Calculating proportionality
if ($proportional) {
if ($width == 0) $factor = $height/$height_old;
elseif ($height == 0) $factor = $width/$width_old;
else $factor = min( $width / $width_old, $height / $height_old );
$final_width = round( $width_old * $factor );
$final_height = round( $height_old * $factor );
}
else {
$final_width = ( $width <= 0 ) ? $width_old : $width;
$final_height = ( $height <= 0 ) ? $height_old : $height;
}
# Loading image to memory according to type
switch ( $info[2] ) {
case IMAGETYPE_GIF: $image = imagecreatefromgif($file); break;
case IMAGETYPE_JPEG: $image = imagecreatefromjpeg($file); break;
case IMAGETYPE_PNG: $image = imagecreatefrompng($file); break;
default: return false;
}
# This is the resizing/resampling/transparency-preserving magic
$image_resized = imagecreatetruecolor( $final_width, $final_height );
if ( ($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG) ) {
$transparency = imagecolortransparent($image);
if ($transparency >= 0) {
$transparent_color = imagecolorsforindex($image, $trnprt_indx);
$transparency = imagecolorallocate($image_resized, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
imagefill($image_resized, 0, 0, $transparency);
imagecolortransparent($image_resized, $transparency);
}
elseif ($info[2] == IMAGETYPE_PNG) {
imagealphablending($image_resized, false);
$color = imagecolorallocatealpha($image_resized, 0, 0, 0, 127);
imagefill($image_resized, 0, 0, $color);
imagesavealpha($image_resized, true);
}
}
imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $final_width, $final_height, $width_old, $height_old);
# Taking care of original, if needed
if ( $delete_original ) {
if ( $use_linux_commands ) exec('rm '.$file);
else @unlink($file);
}
# Preparing a method of providing result
switch ( strtolower($output) ) {
case 'browser':
$mime = image_type_to_mime_type($info[2]);
header("Content-type: $mime");
$output = NULL;
break;
case 'file':
$output = $file;
break;
case 'return':
return $image_resized;
break;
default:
break;
}
# Writing image according to type to the output destination
switch ( $info[2] ) {
case IMAGETYPE_GIF: imagegif($image_resized, $output); break;
case IMAGETYPE_JPEG: imagejpeg($image_resized, $output); break;
case IMAGETYPE_PNG: imagepng($image_resized, $output); break;
default: return false;
}
return true;
}
//IMAGE RESIZE FUNCTION CODE END.
/******** IMAGE UPLOAD SCRIPT BEGIN ********/
//IF IMAGE IS JPEG OR PNG
if (($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
{
//IF THERE IS AN ERROR, DISPLAY THE MESSAGE
if ($_FILES["file"]["error"] > 0)
{
echo "<p>Error: " . $_FILES["file"]["error"] . "
<br />
Redirecting...
<br />
<br />
If you are not automatically redirected after 3 seconds, <b><a href='addproduct_uploadimage.php'>click here to try another upload.</a></p>";
//REDIRECT
echo "<META HTTP-EQUIV='refresh' CONTENT='3;URL=addproduct_uploadimage.php'>";
}
//OTHERWISE, PROCEED
else
{
//EXPLAIN CURRENT PROCESS TO USER
echo "<p>File Uploaded: " . $_FILES["file"]["name"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temporary file stored in: " . $_FILES["file"]["tmp_name"] . "</p><br /><br />";
//ABSOLUTE PATH OF FILE
$img_url = "/home/space_/hybridtempo.net/images/uploads/" . $_FILES["file"]["name"];
//IF FILE ALREADY EXISTS, TELL THE USER IT ALREADY EXISTS, REDIRECT TO TRY AGAIN
if (file_exists($img_url))
{
echo "<p>" . $_FILES["file"]["name"] . " already exists. Redirecting...
<br />
<br />
If you are not automatically redirected after 3 seconds, <b><a href='addproduct_uploadimage.php'>click here to try another upload.</a></p>";
echo "<META HTTP-EQUIV='refresh' CONTENT='3;URL=addproduct_uploadimage.php'>";
}
//IF FILE DOES NOT ALREADY EXIST, PROCEED...
else
{
//POSITION - FROM THE ABSOLUTE ROOT OF THE CLIENT'S WEBSPACE - FOR THE FILE TO GET STORED
$img_url = "/home/space_/hybridtempo.net/images/uploads/" . $_FILES["file"]["name"];
$thumb_url = "/home/space_/hybridtempo.net/images/uploads/thumbnails/" . $_FILES["file"]["name"];
//MOVE TEMPORARY FILE TO WHERE IT IT SHOULD BE STORED
move_uploaded_file($_FILES["file"]["tmp_name"], $img_url);
// FIND IMAGE WIDTH AND HEIGHT TO DETRMINE RESIZE DIMENSIONS
list($width, $height) = getimagesize($img_url);
// RESIZE BASED ON PORTRAIT OR LANDSCAPE ORIENTATION OF IMAGE
if ($width > $height)
{
smart_resize_image($img_url,
$width = 800,
$height = 0,
$proportional = true,
$output = 'file',
$delete_original = true,
$use_linux_commands = false );
// STORE URL OF IMAGE IN 'picture' TABLE in 'shop' DATABASE
mysql_connect("**************","***********","*****");
mysql_select_db("hybridtempo_shop");
$prod_id = $_SESSION["prod_id"];
$result = mysql_query ("INSERT INTO picture (prod_id,picture_url,picture_id) VALUES ('$prod_id', '$img_url', 'NULL')");
mysql_close();
smart_resize_image($img_url,
$width = 175,
$height = 117,
$proportional = false,
$output = $thumb_url,
$delete_original = false,
$use_linux_commands = false );
// STORE URL OF IMAGE IN 'picture' TABLE in 'shop' DATABASE
mysql_connect("******************","****************","***********");
mysql_select_db("hybridtempo_shop");
$prod_id = $_SESSION["prod_id"];
$result = mysql_query ("INSERT INTO picture (prod_id,thumbnail_url,picture_id) VALUES ('$prod_id', '$thumb_url', 'NULL')");
mysql_close();
}
else
{
smart_resize_image($img_url,
$width = 0,
$height = 700,
$proportional = true,
$output = 'file',
$delete_original = true,
$use_linux_commands = false );
// STORE URL OF IMAGE IN 'picture' TABLE in 'shop' DATABASE
mysql_connect("*********","**********","**********");
mysql_select_db("hybridtempo_shop");
$prod_id = $_SESSION["prod_id"];
$result = mysql_query ("INSERT INTO picture (prod_id,picture_url,picture_id) VALUES ('$prod_id', '$img_url', 'NULL')");
mysql_close();
$wrongsize_thumb_url = $_FILES["file"]["name"];
smart_resize_image ($img_url,
$width = 175,
$height = 0,
$proportional = true,
$output = $wrongsize_thumb_url,
$delete_original = false,
$use_linux_commands = false
);
//FUNCTION FROM WIDELY SUPPORTED GD LIBRARY, BUNDLED WITH PHP
$wrongsize_thumb_url = $_FILES["file"]["name"];
//CROP PORTRAIT THUMBNAILS, AS THEY ARE TOO TALL.
$image_for_resize = ImageCreateFromJpeg($wrongsize_thumb_url);
$temporary_image = imagecreatetruecolor(117,175);
imagecopyresized (
$temporary_image, $image_for_resize,
$destination_x_coordinate = 0,
$destination_y_coordinate = 0,
$source_x_coordinate = 0,
$source_y_coordinate = 58,
$destination_width = 175,
$destination_height = 117,
$source_width = 175,
$source_height = 261
);
imagejpeg ($image_for_resize, 'thumbnail_' . $_FILES["file"]["name"]);
imagedestroy ($wrongsize_thumb_url);
// STORE URL OF IMAGE IN 'picture' TABLE in 'shop' DATABASE
mysql_connect("************","*************","***************");
mysql_select_db("hybridtempo_shop");
$prod_id = $_SESSION["prod_id"];
$result = mysql_query ("INSERT INTO picture (prod_id,thumbnail_url,picture_id) VALUES ('$prod_id', '$thumb_url', 'NULL')");
mysql_close();
}
//EXPLAIN WHERE IMAGE AND THUMBNAIL WERE STORED AND INFORM OF IMINENT REDIRECT
echo "<p>Image stored in: " . $_img_url;
echo "<br />";
echo "<p>Thumbnail stored in: " . $thumb_url;
echo "<br /><br />";
// UNSET PROD_ID VARIABLE TO PREVENT MIXUPS IF ADDING ANOTHER PRODUCT
unset($_SESSION['prod_id']);
//REDIRECTION MESSAGE
echo "If you are not automatically redirected after 5 seconds, <b><a href='index.php'>click here to return to the homepage.</a></p>";
//REDIRECT TO HOMEPAGE
//echo "<META HTTP-EQUIV='refresh' CONTENT='5;URL=index.php'>";
}
}
}
else
{
echo "<p>Error: The file needs to be an image. Redirecting...
<br />
<br />
If you are not automatically redirected after 3 seconds, <b><a href='addproduct_uploadimage.php'>click here to try another upload.</a></b></p>";
//REDIRECT
echo "<META HTTP-EQUIV='refresh' CONTENT='3;URL=addproduct_uploadimage.php'>";
}
?>
</center>
</div>
<div class="nav_bar">
<p><i> ~<a href="index.php"> home </a>~
<a href="http://blog.hybridtempo.net/"> blog </a>~
<a href="shop.php"> shop </a>~
<a href="#"> sourcing </a>~ <!-- Navigation bar contents. !-->
<a href="#"> links </a>~
<a href="#"> about </a>~
<a href="#"> contact </a>~ </i></p>
</div>
</div>
<div id="bg">
<div>
<table cellspacing="0" cellpadding="0">
<tr>
<td>
<img src="images/bg.jpg" alt=""/> <!-- Background image. Must match thumbnail on homepage navigation grid !-->
</td>
</tr>
</table>
</div>
</div>
</body>
</html>