Poszukuję skryptu do zmiany rozmiaru obrazków wg zadanych kryteriów

0

Czołem!

Macie może skrypt do skalowania obrazków JPEG / PNG z max. 6MB rozmiarem?

  1. Wrzucam obrazek JPG/PNG.
  2. Skrypt kaluje do szerokości 960px, jeśli mniejsza, to nic nie robi, jeśli większa, skaluje.
  3. Otrzymuję link do edytowanego obrazka i ew. podgląd.
0

Mam taki kod -

index.php

<?php
include( 'skalowanie.php');


$max_file_size = 4000000;
$valid_exts = array('jpeg', 'jpg', 'png');



$sizes = array(960 => 150);

if ($_SERVER['REQUEST_METHOD'] == 'POST' AND isset($_FILES['image'])) {
	if( $_FILES['image']['size'] < $max_file_size ){

		$ext = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION));
		if (in_array($ext, $valid_exts)) {

			foreach ($sizes as $w => $h) {
				$files[] = resize($w, $h);
			}

		} else {
			$msg = 'Nieobsługiwany plik lub nie podano pliku.';
		}
	} else{
		$msg = 'Max. rozmiar to 4MB';
	}
}
?>
<!doctype html>
<html>
<head>
	<meta charset="UTF-8" />
	<title>Skalowanie</title>
</head>
<body>
	<div class="wrap">
		<?php if(isset($msg)): ?>
			<p class='alert'><?php echo $msg ?></p>
		<?php endif ?>
		
		<!-- file uploading form -->
		<form action="" method="post" enctype="multipart/form-data">
			<label>
				<span>Choose image</span>
				<input type="file" name="image" accept="image/*" />
			</label>
			<input type="submit" value="Skaluj!" />
		</form>
		
		<?php
		// show image thumbnails
		if(isset($files)){
			foreach ($files as $image) {
				echo "<img class='img' src='{$image}' /><br /><br />";
			}
		}
		?>
	</div>
</body>
</html>

skalowanie.php

<?php
function resize($width, $height){

	list($w, $h) = getimagesize($_FILES['image']['tmp_name']);
	
	$ratio = max($width/$w, $height/$h);
	$h = ceil($height / $ratio);
	$x = ($w - $width / $ratio) / 2;
	$w = ceil($width / $ratio);

	$path = 'uploads/'.$width.'x'.$height.'_'.$_FILES['image']['name'];

	$imgString = file_get_contents($_FILES['image']['tmp_name']);

	$image = imagecreatefromstring($imgString);
	$tmp = imagecreatetruecolor($width, $height);
	imagecopyresampled($tmp, $image,
  	0, 0,
  	$x, 0,
  	$width, $height,
  	$w, $h);

	switch ($_FILES['image']['type']) {
		case 'image/jpeg':
			imagejpeg($tmp, $path, 100);
			break;
		case 'image/png':
			imagepng($tmp, $path, 0);
			break;
		default:
			exit;
			break;
	}
	return $path;

	imagedestroy($image);
	imagedestroy($tmp);
}
?>

Jak przerobić, aby to działało tak, że:

  • jeśli szerokość mniejsza niż 960px, to zostawia a jeśli większa niż 960px, to zmienia na 960px. wysokość taka sama jak we wrzuconym.
0

Ooo, dzięki za poradę:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1