Показать сообщение отдельно

  #6  
Старый 08.06.2010, 01:34
Axel G
Познающий
Регистрация: 28.01.2009
Сообщений: 32
С нами: 9096680

Репутация: 1
По умолчанию

Парни, такой вопрос, сейчас при создании превью, создается jpg изображение, хотя источником является png рисунок, вопрос, что нужно убрать из кода чтобы не приходилось уродовать картинку перегонкой из одного формата в другой, а создавать миниатюрку всего лишь изменив ширину и пропорционально высоту исходного изображения.

[spoiler="upload.php"]
PHP код:
<?

// create thumbnails
function createthumb($name,$sourcetype,$filename,$new_w,$new_h){
  if (
$sourcetype==".jpg"){
    
$src_img=imagecreatefromjpeg($name);
  }
  if (
$sourcetype==".png"){
    
$src_img=imagecreatefrompng($name);
  }
  if (
$sourcetype==".gif"){
    
$src_img=imagecreatefromgif($name);
  }

  
$old_x=imageSX($src_img);
  
$old_y=imageSY($src_img);
  if (
$old_x $old_y) {
    
$thumb_w=$new_w;
    
$thumb_h=$old_y*($new_h/$old_x);
  }
  if (
$old_x $old_y) {
    
$thumb_w=$old_x*($new_w/$old_y);
    
$thumb_h=$new_h;
  }
  if (
$old_x == $old_y) {
    
$thumb_w=$new_w;
    
$thumb_h=$new_h;
  }

  
$dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
  
imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);

  
imagejpeg($dst_img,$filename);
  
imagedestroy($dst_img);
  
imagedestroy($src_img);
}

// script upload

include("header.php");

$max_size 1024 2048;

$max_th 300;
$min_th 100;

$path "images/";
$tpath "thumbs/";

$tsize $_POST['thumb'];
if(
$tsize >= $max_th || $tsize <= $min_th)
 die(
'<p align="center"><font size="4" color="red">Превью должно быть меньше 300, но больше 100  пикселей.</font><center>');

if(!isset(
$_FILES['userfile'])) exit;
if(!
is_uploaded_file($_FILES['userfile']['tmp_name'])) exit;

if (
$_FILES['userfile']['size']>$max_size) {
  echo 
"<p align=center>Файл слишком большой!</p>";
  exit;
}

$pictype="";
switch(
strtolower($_FILES['userfile']['type'])){
  case 
"image/jpeg" $pictype=".jpg"; break;
  case 
"image/pjpeg"$pictype=".jpg"; break;
  case 
"image/gif"  $pictype=".gif"; break;
  case 
"image/png"  $pictype=".png"; break;
  case 
"image/x-png"$pictype=".png"; break;
  default           : 
$pictype=""; break;
}

if(
$pictype!="") {
//-------
  
do {
    
$uniq=md5(uniqid(rand(),1));
    
$srcfile=$path.$uniq.$pictype;
  } while(
file_exists($srcfile));

  
$res copy($_FILES['userfile']['tmp_name'], $srcfile);

  if (!
$res) {
    echo 
"<p align=center>Ошибка копирования файла на сервер!</p>";
    exit;
  }
  @
chmod($srcfile,0666);
  
//set url variable
  
$imgf $path $uniq $pictype;
  
$thbf $tpath $uniq ".jpg";
  
createthumb($imgf,$pictype,$thbf,$tsize,$tsize);
  @
chmod($thbf,0666);
  
$urlf $domain $path $uniq $pictype;

  
?>

# HTML вывод при удачном аплоаде.

  <?
// error
} else {
  echo 
"<p align=center>Формат файла не распознан!</p>";
  exit;
}

include(
"footer.php");

?>
[/spoiler]

Последний раз редактировалось Axel G; 10.06.2010 в 22:56..
 
Ответить с цитированием