Jump to content
  • 0

Чего нехвотает в коде чтобы картинка поменяла размеры?


vonsap
 Share

Question

Доброго вам времени суток! Прошу помочь, мне кодом, никак немогу понять что надо вставить чтобы размеры картинки поменялись.. Подскажите пожалуйста как это сделать?

<a href="gal_int.php">.: назад :.</a>

<?
$c_dir=$_SERVER['DOCUMENT_ROOT'] . "/gal/" . $_REQUEST['g'];
if(@$_REQUEST['action']=="add"){

$images=array();
$d = dir($c_dir);
//echo "111";
$k=0;
while ( false !== ( $entry = $d->read() ) )
//echo strpos($entry, ".tx") . "
";
if ( strpos($entry, ".tx")>0)
{
$m=explode(".",$entry);
//echo $entry . "222
";
$i = array('id' => $m[0]);
$i['file'] = $_SERVER['HTTP_HOST'] . "/gal/" . $_REQUEST['g'] . "/" . $m[0] . ".jpg";
$i['tumb'] = $_SERVER['HTTP_HOST'] . "/gal/" . $_REQUEST['g'] . "/" . $m[0] . "_thumb.jpg";
$i['tx'] = file_get_contents($c_dir . "/" . $entry );
$images[$k] = $i;
$k++;
//echo $images[$i['id']]['id'] . "
";
}
sort($images);
//$ww=count($images)-1;
//echo $images[$ww]['id'];
if(count($images)>0){
//echo count($images);
$id=$images[count($images)-1]['id']+1;
}else{
$id=1;
}
if($_FILES['files']['name']!=""){
//echo $_FILES['files']['tmp_name'] . ' - ' . $c_dir . "/" . $id . ".jpg - " . $_FILES['files']['name'];
if(!move_uploaded_file($_FILES['files']['tmp_name'], $c_dir . "/" . $id . ".jpg")){
echo "Файл изображения не скопирован!
";
}
}
if($_FILES['tumb']['name']!=""){
if(!move_uploaded_file($_FILES['tumb']['tmp_name'], $c_dir . "/" . $id . "_thumb.jpg")){
echo "Файл превью не скопирован!
";
}
}
$myfile = fopen($c_dir . "/" . $id . ".tx", "w");
fwrite($myfile, $_REQUEST['tx']);
fclose($myfile);
header("location: " . $_SERVER['SCRIPT_NAME'] . "?g=" . $_REQUEST['g'] . "&n=" . $_REQUEST['n']);
}else if(@$_REQUEST['action']=="del"){
$id=$_REQUEST['id'];
unlink($c_dir . "/" . $id . "_thumb.jpg");
unlink($c_dir . "/" . $id . ".jpg");
unlink($c_dir . "/" . $id . ".tx");
header("location: " . $_SERVER['SCRIPT_NAME'] . "?g=" . $_REQUEST['g'] . "&n=" . $_REQUEST['n']);
}else if(@$_REQUEST['action']=="change"){
$id1=$_REQUEST['id1'];
$id2=$_REQUEST['id2'];
rename($c_dir . "/" . $id1 . "_thumb.jpg",$c_dir . "/" . $id1 . "_thumb.jpg_temp");
rename($c_dir . "/" . $id1 . ".jpg", $c_dir . "/" . $id1 . ".jpg_temp");
rename($c_dir . "/" . $id1 . ".tx", $c_dir . "/" . $id1 . ".tx_temp");
rename($c_dir . "/" . $id2 . "_thumb.jpg", $c_dir . "/" . $id1 . "_thumb.jpg");
rename($c_dir . "/" . $id2 . ".jpg", $c_dir . "/" . $id1 . ".jpg");
rename($c_dir . "/" . $id2 . ".tx", $c_dir . "/" . $id1 . ".tx");
rename($c_dir . "/" . $id1 . "_thumb.jpg_temp", $c_dir . "/" . $id2 . "_thumb.jpg");
rename($c_dir . "/" . $id1 . ".jpg_temp", $c_dir . "/" . $id2 . ".jpg");
rename($c_dir . "/" . $id1 . ".tx_temp", $c_dir . "/" . $id2 . ".tx");
//unlink($c_dir . "/" . $id1 . "_thumb.jpg_temp");
//unlink($c_dir . "/" . $id1 . ".jpg_temp");
//unlink($c_dir . "/" . $id1 . ".tx_temp");
header("location: " . $_SERVER['SCRIPT_NAME'] . "?g=" . $_REQUEST['g'] . "&n=" . $_REQUEST['n']);
}else if(@$_REQUEST['action']=="do_changes"){
$id=$_REQUEST['id'];
if($_FILES['files']['name']!=""){
//echo $_FILES['files']['tmp_name'] . ' - ' . $c_dir . "/" . $id . ".jpg - " . $_FILES['files']['name'];
unlink($c_dir . "/" . $id . ".jpg");
if(!move_uploaded_file($_FILES['files']['tmp_name'], $c_dir . "/" . $id . ".jpg")){
echo "Файл изображения не скопирован!
";
}
}
if($_FILES['tumb']['name']!=""){
unlink($c_dir . "/" . $id . "_thumb.jpg");
if(!move_uploaded_file($_FILES['tumb']['tmp_name'], $c_dir . "/" . $id . "_thumb.jpg")){
echo "Файл превью не скопирован!
";
}
}
$myfile = fopen($c_dir . "/" . $id . ".tx", "w");
fwrite($myfile, $_REQUEST['tx']);
fclose($myfile);
header("location: " . $_SERVER['SCRIPT_NAME'] . "?g=" . $_REQUEST['g'] . "&n=" . $_REQUEST['n']);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Галерея <?= $_REQUEST['n'] ?></title>
<script language="javascript" type="text/javascript">
function del_img(id){
if(confirm("Вы действительно хотите удалить изображение?")){
self.location="<?= $_SERVER['SCRIPT_NAME'] ?>?action=del&id="+id+"&g=<?= $_REQUEST['g'] ?>&n=<?= $_REQUEST['n'] ?>";
}
}
</script>
</head>

<body >
<?
$c_dir=$_SERVER['DOCUMENT_ROOT'] . "/gal/" . $_REQUEST['g'];
$images=array();
$d = dir($c_dir);
//echo "111";
$k=0;
while ( false !== ( $entry = $d->read() ) )
//echo strpos($entry, ".tx") . "
";
if ( strpos($entry, ".tx")>0)
{
$m=explode(".",$entry);
//echo $entry . "222
";
$i = array('id' => $m[0]);
$i['file'] = $_SERVER['HTTP_HOST'] . "/gal/" . $_REQUEST['g'] . "/" . $m[0] . ".jpg";
$i['tumb'] = $_SERVER['HTTP_HOST'] . "/gal/" . $_REQUEST['g'] . "/" . $m[0] . "_thumb.jpg";
$i['tx'] = file_get_contents($c_dir . "/" . $entry );
$images[$k] = $i;
$k++;
}
sort($images);
?>
<? if(@$_REQUEST['action']=="re"){ ?>
<h1>Изменить изображение</h1>

<form action="<?= $_SERVER['SCRIPT_NAME'] ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="action" value="do_changes" />
<input type="hidden" name="id" value="<?= $_REQUEST['uin'] ?>" />
<input type="hidden" name="g" value="<?= $_REQUEST['g'] ?>" />
<input type="hidden" name="n" value="<?= $_REQUEST['n'] ?>" />
<table>
<tr>
<td>Превью(100*68)</td><td><input type="file" name="tumb" /></td>
</tr>
<tr>
<td>Большое изображение(600*404)</td>
<td><input type="file" name="files" /></td>
</tr>
<tr>
<td>Описание</td><td><textarea name="tx"><?= $images[$_REQUEST['id']]['tx'] ?></textarea></td>
</tr>
<tr>
<td colspan="2"><button type="submit">Изменить</button></td>
</tr>
</table>
</form>
<? }else{ ?>
<h1>Добавить изображение</h1>

<form action="<?= $_SERVER['SCRIPT_NAME'] ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="action" value="add" />
<input type="hidden" name="g" value="<?= $_REQUEST['g'] ?>" />
<input type="hidden" name="n" value="<?= $_REQUEST['n'] ?>" />
<table>
<tr>
<td>Превью(100*68)</td><td><input type="file" name="tumb" /></td>
</tr>
<tr>
<td>Большое изображение(600*404)</td><td><input type="file" name="files" /></td>
</tr>
<tr>
<td>Описание</td><td><textarea name="tx"></textarea></td>
</tr>
<tr>
<td colspan="2"><button type="submit">Добавить</button></td>
</tr>
</table>
</form>
<? } ?>
<h1>Список добавленных изображений</h1>

<table>
<tr>
<th width="100">Изображение</th><th>Описание</th><th>URL</th><th>Вверх</th><th>Вниз</th><th>Изменить</th><th>Удалить</th>
</tr>

<?
$kn=0;
//ksort($images);
foreach($images as $i){
$up="";
$down="";
if($kn>0){
$up="<a href="" . $_SERVER['SCRIPT_NAME'] . "?action=change&id1=" . $images[$kn-1]['id'] . "&id2=" . $i['id'] . "&g=" . $_REQUEST['g'] . "&n=" . $_REQUEST['n'] . "">up</a>";
}
if($kn<(count($images)-1)){
$down="<a href="" . $_SERVER['SCRIPT_NAME'] . "?action=change&id1=" . $i['id'] . "&id2=" . $images[$kn+1]['id'] . "&g=" . $_REQUEST['g'] . "&n=" . $_REQUEST['n'] . "">down</a>";;
}
$kn++;
$url1=explode("/",$_SERVER['PHP_SELF']);
$url=$_SERVER['HTTP_HOST'];
for($r=0;$r<count($url1)-1;$r++){
$url.=$url1[$r] . "/";
}
$url.="gallery.php?g=" . $_REQUEST['g'] . "&img=" . $i['id'];
//$url=substr($_SERVER['REQUEST_URI'],0,$url);
?>
<tr><td width="100"><img src="http://<?= $i['tumb'] ?>?tm=<?= mktime() ?>" /></td><td><?= $i['tx'] ?></td><td><?= $url ?></td><td><?= $up ?></td><td><?= $down ?></td><td><a href="<?= $_SERVER['SCRIPT_NAME'] ?>?action=re&id=<?= $kn-1 ?>&uin=<?= $i['id'] ?>&g=<?= $_REQUEST['g'] ?>&n=<?= $_REQUEST['n'] ?>">change</a></td><td><a href="#" onClick="del_img(<?= $i['id'] ?>)">del</a></td></tr>
<? }
?>

</table>
</body>
</html>

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

2 vonsap чтобы размеры картинки поменялись виртуально или физически? если виртуально то Если физически, то копать в сторону GD (библиотека в РНР для работы с графическими изображениями)

Если вы сами не понимаете куда вам вставить в код работу с GD, то куда уж нам простым кодерам... :)

Рискну предположить что надо создать превьшку тогда вставить можно где-то в середине этого кода

if($_FILES['files']['name']!=""){
unlink($c_dir . "/" . $id . ".jpg");
if(!move_uploaded_file($_FILES['files']['tmp_name'], $c_dir . "/" . $id . ".jpg")){
echo "Файл изображения не скопирован!
";
}
}
if($_FILES['tumb']['name']!=""){
unlink($c_dir . "/" . $id . "_thumb.jpg");
if(!move_uploaded_file($_FILES['tumb']['tmp_name'], $c_dir . "/" . $id . "_thumb.jpg")){
echo "Файл превью не скопирован!
";
}
} else {
// делаем маленькую превьюшку из большого изображения если оно было получено
}

Link to comment
Share on other sites

  • 0

2 Yarik Voronov Вставил куда ты посоветовал код но неполучения, хотя побывал отдельно все работает....

if($_FILES['tumb']['name']!=""){
unlink($c_dir . "/" . $id . "_thumb.jpg");
if(!move_uploaded_file($_FILES['tumb']['tmp_name'], $c_dir . "/" . $id . "_thumb.jpg")){
echo "Файл превью не скопирован!
";
}
} else {
// делаем маленькую превьюшку из большого изображения если оно было получено
require ('imgresize.php');
if (img_resize( "original.jpg" , 'small.jpg', 100, 60))
echo 'Image resized OK';
else
echo 'Resize failed!';

<?php
/***********************************************************************************
Функция img_resize(): генерация thumbnails
Параметры:
$src - имя исходного файла
$dest - имя генерируемого файла
$width, $height - ширина и высота генерируемого изображения, в пикселях
Необязательные параметры:
$rgb - цвет фона, по умолчанию - белый
$quality - качество генерируемого JPEG, по умолчанию - максимальное (100)
***********************************************************************************/
function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=100)
{
if (!file_exists($src)) return false;

$size = getimagesize($src);

if ($size === false) return false;

// Определяем исходный формат по MIME-информации, предоставленной
// функцией getimagesize, и выбираем соответствующую формату
// imagecreatefrom-функцию.
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)) return false;

$x_ratio = $width / $size[0];
$y_ratio = $height / $size[1];

$ratio = min($x_ratio, $y_ratio);
$use_x_ratio = ($x_ratio == $ratio);

$new_width = $use_x_ratio ? $width : floor($size[0] * $ratio);
$new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio);
$new_left = $use_x_ratio ? 0 : floor(($width - $new_width) / 2);
$new_top = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);

$isrc = $icfunc($src);
$idest = imagecreatetruecolor($width, $height);

imagefill($idest, 0, 0, $rgb);
imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,
$new_width, $new_height, $size[0], $size[1]);

imagejpeg($idest, $dest, $quality);

imagedestroy($isrc);
imagedestroy($idest);

return true;

}
?>

Link to comment
Share on other sites

  • 0

Осталась маленькая проблема, картинки с большим весом не обрабатываются. Может чтото надо в код добавит

<?php
/***********************************************************************************
Функция img_resize(): генерация thumbnails
Параметры:
$src - имя исходного файла
$dest - имя генерируемого файла
$width, $height - ширина и высота генерируемого изображения, в пикселях
Необязательные параметры:
$rgb - цвет фона, по умолчанию - белый
$quality - качество генерируемого JPEG, по умолчанию - максимальное (100)
***********************************************************************************/
function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=100)
{
if (!file_exists($src)) return false;

$size = getimagesize($src);

if ($size === false) return false;

// Определяем исходный формат по MIME-информации, предоставленной
// функцией getimagesize, и выбираем соответствующую формату
// imagecreatefrom-функцию.
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)) return false;

$x_ratio = $width / $size[0];
$y_ratio = $height / $size[1];

$ratio = min($x_ratio, $y_ratio);
$use_x_ratio = ($x_ratio == $ratio);

$new_width = $use_x_ratio ? $width : floor($size[0] * $ratio);
$new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio);
$new_left = $use_x_ratio ? 0 : floor(($width - $new_width) / 2);
$new_top = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);

$isrc = $icfunc($src);
$idest = imagecreatetruecolor($width, $height);

imagefill($idest, 0, 0, $rgb);
imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,
$new_width, $new_height, $size[0], $size[1]);

imagejpeg($idest, $dest, $quality);

imagedestroy($isrc);
imagedestroy($idest);

return true;

}
?>

Link to comment
Share on other sites

  • 0
Осталась маленькая проблема, картинки с большим весом не обрабатываются. Может чтото надо в код добавит

Насколько большой вес? 500Кило? или 5 Метров? эта большая картинка на сервер загружается?

//.....
$size = getimagesize($src);
var_dump($size);
//....

вывод браузера от картинки которая не ресайзиться (var_dump()) в студию + версию РНР

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy