Это очень надежная процедура.
Он изменяет размеры, создает, размер предварительного просмотра, и создает миниатюру
выбирает также лучший лучший тип ПИК и сохраняет большой и эскиз как base64 <img>
$thumbWidth = 60;
$thumbHeight = 60;
$previewWidth = 80;
$previewHeight = 60;
$bigWidth = 320;
$bigHeight = 240;
if(is_uploaded_file($_FILES['image1']['tmp_name']) || !($_FILES['image1']['error'] !== UPLOAD_ERR_OK)){
$save = false;
$jspan = '';
$gspan = '';
$pspan = '';
switch(strtolower($_FILES['image1']['type'])){
case 'image/jpeg':
$image = @imagecreatefromjpeg($_FILES['image1']['tmp_name']);
if ($image !== false){$save = true;break;}
case 'image/png':
$image = @imagecreatefrompng($_FILES['image1']['tmp_name']);
if ($image !== false){$save = true;break;}
case 'image/gif':
$image = @imagecreatefromgif($_FILES['image1']['tmp_name']);
if ($image !== false){$save = true;break;}
default:
$img = @getimagesize($_FILES['image1']['tmp_name']);
switch(strtolower($img['mime'])){
case 'image/jpeg':
$image = @imagecreatefromjpeg($_FILES['image1']['tmp_name']);
if ($image !== false){$save = true;break;}
case 'image/png':
$image = @imagecreatefrompng($_FILES['image1']['tmp_name']);
if ($image !== false){$save = true;break;}
case 'image/gif':
$image = @imagecreatefromgif($_FILES['image1']['tmp_name']);
if ($image !== false){$save = true;break;}
default:
$filename = $_FILES['image1']['name'];
$ext = substr($filename,-3);
switch(strtolower($ext)){
case 'jpg':
$image = @imagecreatefromjpeg($_FILES['image1']['tmp_name']);
if ($image !== false){$save = true;break;}
case 'gif':
$image = @imagecreatefromgif($_FILES['image1']['tmp_name']);
if ($image !== false){$save = true;break;}
case 'png':
$image = @imagecreatefrompng($_FILES['image1']['tmp_name']);
if ($image !== false){$save = true;break;}
default:
$image = @imagecreatefromjpeg($_FILES['image1']['tmp_name']);
if ($image !== false){$save = true;break;}
$image = @imagecreatefrompng($_FILES['image1']['tmp_name']);
if ($image !== false){$save = true;break;}
$image = @imagecreatefromgif($_FILES['image1']['tmp_name']);
if ($image !== false){$save = true;break;}
}
}
}
}
if ($save === true){
$originalWidth = imagesx($image);
$originalHeight = imagesy($image);
$scale = min($previewWidth/$originalWidth, $previewHeight/$originalHeight);
$newWidth = ceil($scale*$originalWidth);
$newHeight = ceil($scale*$originalHeight);
$newPic = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($newPic, $image,0, 0, 0, 0,$newWidth, $newHeight, $originalWidth, $originalHeight);
ob_start();
imagejpeg($newPic, NULL, 70);
$jpg = ob_get_clean();
ob_clean();
ob_end_flush();
$jLen = strlen($jpg);
ob_start();
imagepng($newPic, NULL, 9);
$png = ob_get_clean();
ob_clean();
ob_end_flush();
$pLen = strlen($png);
ob_start();
imagegif($newPic);
$gif = ob_get_clean();
ob_clean();
ob_end_flush();
$gLen = strlen($gif);
if ($gLen < $jLen){
if ($pLen < $gLen){
$raw = $png;
$png = null;
$type = 'png';
$pspan = '<span class="size">';
}
else{
$raw = $gif;
$gif = null;
$type = 'gif';
$gspan = '<span class="size">';
}
}
elseif($pLen < $jLen){
$raw = $png;
$png = null;
$type = 'png';
$pspan = '<span class="size">';
}
else{
$raw = $jpg;
$jpg = null;
$type = 'jpg';
$jspan = '<span class="size">';
}
$base64 = base64_encode($raw);
$thumb1 = "#thumb1{background-image:url('data:image/$type;base64,$base64')}";
$size = 'Thumb';
echo "<p>Image $num $size <br>$jspan jpg: $jLen bytes</span>, <br>$gspan gif: $gLen bytes</span>, <br>$pspan png: $pLen bytes</span></p> $thumb1";
$filename = 'thumb1.' . $type;
$fp = fopen($filename ,"w");
fwrite($fp, $raw);
fclose($fp);
imagedestroy($newPic);
$filename = "thumb1_$type.html";
$fp = fopen($filename ,"w");
fwrite($fp, $thumb1);
fclose($fp);
$thumb1 = mysql_escape_string($thumb1);
@mysql_unbuffered_query("UPDATE `photos` SET `thumb1`='$thumb1' WHERE `id`=$id");
$scale = min($bigWidth/$originalWidth, $bigHeight/$originalHeight);
$newWidth = ceil($scale*$originalWidth);
$newHeight = ceil($scale*$originalHeight);
$newPic = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($newPic, $image,0, 0, 0, 0,$newWidth, $newHeight, $originalWidth, $originalHeight);
ob_start();
imagejpeg($newPic, NULL, 70);
$jpg = ob_get_clean();
ob_clean();
ob_end_flush();
$jLen = strlen($jpg);
ob_start();
imagepng($newPic, NULL, 9);
$png = ob_get_clean();
ob_clean();
ob_end_flush();
$pLen = strlen($png);
ob_start();
imagegif($newPic);
$gif = ob_get_clean();
ob_clean();
ob_end_flush();
$gLen = strlen($gif);
if ($gLen < $jLen){
if ($pLen < $gLen){
$raw = $png;
$png = null;
$type = 'png';
$pspan = '<span class="size">';
}
else{
$raw = $gif;
$gif = null;
$type = 'gif';
$gspan = '<span class="size">';
}
}
elseif($pLen < $jLen){
$raw = $png;
$png = null;
$type = 'png';
$pspan = '<span class="size">';
}
else{
$raw = $jpg;
$jpg = null;
$type = 'jpg';
$jspan = '<span class="size">';
}
$base64 = base64_encode($raw);
$size = 'Full Size';
$filename = 'big1.' . $type;
$big1 = "<img width=\"$newWidth\" height=\"$newHeight\" src=\"data:image/$type;base64,$base64\" alt =\"profile photo one\"/>";
echo "<p>Image $num $size <br>$jspan jpg: $jLen bytes</span>, <br>$gspan gif: $gLen bytes</span>, <br>$pspan png: $pLen bytes</span></p> $big1";
$fp = fopen($filename ,"w");
fwrite($fp, $raw);
fclose($fp);
imagedestroy($newPic);
$filename = "big1_$type.html";
$fp = fopen($filename ,"w");
fwrite($fp, $big1);
fclose($fp);
$big1 = mysql_escape_string($big1);
@mysql_unbuffered_query("UPDATE `photos` SET `big1`='$big1' WHERE `id`=$id");
$scale = min($thumbWidth/$originalWidth, $thumbHeight/$originalHeight);
$newWidth = ceil($scale*$originalWidth);
$newHeight = ceil($scale*$originalHeight);
$newPic = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($newPic, $image,0, 0, 0, 0,$newWidth, $newHeight, $originalWidth, $originalHeight);
ob_start();
imagejpeg($newPic, NULL, 70);
$jpg = ob_get_clean();
ob_clean();
ob_end_flush();
$jLen = strlen($jpg);
ob_start();
imagepng($newPic, NULL, 9);
$png = ob_get_clean();
ob_clean();
ob_end_flush();
$pLen = strlen($png);
ob_start();
imagegif($newPic);
$gif = ob_get_clean();
ob_clean();
ob_end_flush();
$gLen = strlen($gif);
if ($gLen < $jLen){
if ($pLen < $gLen){
$raw = $png;
$png = null;
$type = 'png';
}
else{
$raw = $gif;
$gif = null;
$type = 'gif';
}
}
elseif($pLen < $jLen){
$raw = $png;
$png = null;
$type = 'png';
}
else{
$raw = $jpg;
$jpg = null;
$type = 'jpg';
}
$base64 = base64_encode($raw);
$size = 'Small Thumb';
$filename = 'smallThumb.' . $type;
$smallThumb = "#t$id{margin:0;display:inline-block;width:60px;height:60px;border:0;background-image: background-image:url('data:image/gif;base64,$base64');}";
echo '<div style="height:60px;width:60px;background-repeat: no-repeat;background-image:background-image:url(' . "'data:image/gif;base64,$base64');\" ></div>\n";
echo "<br/><p>Image $num $size <br/>jpg: $jLen bytes<br>gif: $gLen bytes<br/>png: $pLen bytes</p> ";
$fp = fopen($filename ,"w");
fwrite($fp, $raw);
fclose($fp);
imagedestroy($image);
imagedestroy($newPic);
$filename = "smallThumb$type.html";
$fp = fopen($filename ,"w");
fwrite($fp,'<!DOCTYPE html><html lang="en"><head><style>' . $smallThumb . '</style></head><body><div id="t9542058256"></div></body></html>');
fclose($fp);
$smallThumb = mysql_escape_string($smallThumb);
@mysql_unbuffered_query("UPDATE `photos` SET `SmallThumb`='$smallThumb' WHERE `id`=$id");
}
возможно дубликат [PHP изменение размера image] (http://stackoverflow.com/questions/2527567/php-resize-image) –
Я думаю, что это уже ответили здесь: http://stackoverflow.com/questions/6128716/jquery-resize-image- перед сохранением – redoc
Я пробовал много ответов на эту тему, но я не смог реализовать их в этом коде. Я новичок в этой теме, поэтому надеюсь найти прямой ответ на эту конкретную проблему/код. Спасибо. – weblover