|
Познающий
Регистрация: 28.01.2009
Сообщений: 32
Провел на форуме: 84089
Репутация:
1
|
|
Уфф, что-то я в конец запутался, подогнать никак не получается = (
Выкладываю весь исходный код скрипта [update].
PHP код:
<?php
/*
=======================================================================
| Author: Axel G (14.06.2010)
|----------------------------------------------------------------------
| Special thanks to: Chaak, #Wolf#, wildshaman, roxblnfk, .::f-duck::.
|----------------------------------------------------------------------
| PHP: 5
|----------------------------------------------------------------------
| Coding Standard: PEAR
=======================================================================
*/
function createThumb($name, $sourcetype, $filename, $new_w, $new_h)
{
if (($sourcetype==".jpg") || ($sourcetype==".jpeg")) {
$src_img=imagecreatefromjpeg($name);
} if ($sourcetype==".png") {
$src_img=imagecreatefrompng($name);
} if ($sourcetype==".gif") {
$src_img=imagecreatefromgif($name);
}
$thumb_q = $_POST['quality_thumb'];
$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);
if (($sourcetype==".jpg") || ($sourcetype==".jpeg")) {
imagejpeg($dst_img,$filename,$thumb_q);
} elseif ($sourcetype==".png") {
imagepng($dst_img,$filename);
} elseif ($sourcetype==".gif") {
imagegif($dst_img,$filename);
}
imagedestroy($dst_img);
imagedestroy($src_img);
}
// скрипт загрузки
include("config.php");
include("header.php");
if (isset($_POST['thumb'])) $tsize=intval($_POST['thumb']);
else exit;
if ($max_th<$tsize || $min_th>$tsize) {
echo "<p align=center><font size=4 color=red>Превью должно быть меньше $max_th, но больше $min_th пикселей !</font></p>";
include("footer.php");
exit;
}
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);
$imgf = $path . $uniq . $pictype;
$thbf = $tpath . $uniq . $pictype;
$urlf = $domain . $path . $uniq . $pictype;
/* ###########################################################################################################
// Инфа о картинке Start
$size = getimagesize($urlf); //функция возвращает размер картинки для тега img, т.е [0] - ширина, [1] - высота, [2] - тип изображения, [3] - [0] + [1]
$width = $size[0];
$height = $size[1];
$type = $size['mime'];
function getfs($urlf){
$headers = get_headers($urlf, 1);
return round(((int)$headers['Content-Length']/1024), 2); //размер в килобайтах
}
$weight = getfs($urlf);
echo "$width x $height ($weight KB)";
}
// Инфа о картинке End
// Start Zoom
$image = imagecreatefrompng($dst_img); // превью
$watermark = imagecreatefrompng("theme/magnifying_glass.png"); // лупа
$ro=0; //отступ от правого края
$lo=0; //отступ сверху
$w = imagesx($image); //ширина картинки
$h = imagesy($image); //высота картинки
$ww = imagesx($watermark); //ширина лупы
$wh = imagesy($watermark); //высота лупы
imagecopy($image, $watermark, $w-$ww-$ro, $h-$wh-$lo, 0, 0, $ww, $wh); // с наложением все понятно = )
header('Content-type: image/png'); // (отравка хттп-заголовка) имеет ли он смысл в моем коде??
imagepng($image); // вывод, все понятно, т.е. мне надо убрать imagepng и вместо imagecopy imagecopyresampled поставить, ведь так??
imagedestroy($image); // чистим память (превью)
imagedestroy($watermark); // чистим память (лупа)
// End Zoom
########################################################################################################### */
if ($_POST['create_thumb'] == "1") { // продолжаем создание миниатюры
// накладываем надпись
if ($_POST['watermark_thumb'] == "1") { // инфа
}
if ($_POST['watermark_thumb'] == "2") { // лупа
}
if ($_POST['watermark_thumb'] == "3") { // без надписи
createThumb($imgf, $pictype, $thbf, $tsize, $tsize);
@chmod($thbf,0666);
include("thumbnail.php");
}
} else { // юзер снял галку, значит
include("picture.php");
}
// если неверный формат файла
} else {
echo "<p align=center><font size=4 color=red>Формат файла не распознан!</font></p>";
include("footer.php");
exit;
}
include("footer.php");
?>
Последний раз редактировалось Axel G; 16.06.2010 в 01:55..
|