Autor Zpráva
gekoncik
Profil
Ahoj,
chtěl bych si udělat na webu moji vlastní galerii obrazků. Chtěl bych nahrávat soubory do složky NOVE a z této složky by se přemísťovaly fotky do složky NAHLEDY a ORIGINALY. Z php.vrana.cz jsem si stáhl script, který mi o brázky změnší. Je to jedna funkce kterou chápu jak funguje, ale hlási mi chybu:

Warning: imagejpeg() [function.imagejpeg]: Unable to open 'p1000691_.jpg' for writing in admin.php on line 25

Nevíte jak se toto vyřešit tento problém? Celý script vypadá takto:


function image_resize($file_in, $file_out, $width, $height) {
$imagesize = getimagesize($file_in);
if ((!$width && !$height) || !$imagesize[0] || !$imagesize[1]) {
return false;
}
if ($imagesize[0] == $width && $imagesize[1] == $height) {
return copy($file_in, $file_out);
}
switch ($imagesize[2]) {
case 1: $img = imagecreatefromgif($file_in); break;
case 2: $img = imagecreatefromjpeg($file_in); break;
case 3: $img = imagecreatefrompng($file_in); break;
default: return false;
}
if (!$img) {
return false;
}
$img2 = imagecreatetruecolor($width, $height);
imagecopyresampled($img2, $img, 0, 0, 0, 0, $width, $height, $imagesize[0], $imagesize[1]);
if ($imagesize[2] == 2) {
return imagejpeg($img2, $file_out);
} elseif ($imagesize[2] == 1 && function_exists("imagegif")) {
imagetruecolortopalette($img2, false, 256);
return imagegif($img2, $file_out);
} else {
return imagepng($img2, $file_out);
}
}

$uprav = "fotky/nove/p1000691.jpg";
list($width, $height) = getimagesize($uprav);
$okolik = 1/4;
$width_ = $width*$okolik;
$height_ = $height*$okolik;
image_resize($uprav, "p1000691_.jpg", $width_, $height_);
creck
Profil
hlavne musis mit nainstalovanou GD knihnovu pro praci s obrazky ...

problem bude patrne v adresari do ktereho se chystas upraveny obrazek zkopirovat ...

zkus dat pred funkci

$file_in = "maly.png";
$file_out = "velky.png";
$max_x = "150";
$max_y = "150";

obrazek "maly.png" a funkci si dej do jednoho adresare a zkus co ti to udela ... potom si hrej s adresari

za funkci dej

<IMG SRC="maly.png" BORDER="0">
<IMG SRC="velky.png" BORDER="0">
gekoncik
Profil
Knihovnu mám..

$file_in = "velky.jpg";
$file_out = "maly.jpg";
list($width, $height) = getimagesize($file_in);
$okolik = 1/4;
$width_ = $width*$okolik;
$height_ = $height*$okolik;
image_resize($file_in, $file_out, $width_, $height_);
echo "<img src='" .$file_in. "' /><br />";
echo "<img src='" .$file_out. "' />";



tak jsem to upravil takto. A vysledek je:
Warning: imagejpeg() [function.imagejpeg]: Unable to open 'maly.jpg' for writing in admin.php on line 25
creck
Profil
tohle funguje zarucene, bohuzel ale jenom pro obrazky *.jpg ...


<?php


/*
*
* funkce pro praci s obrazky
*
*/

$path = '../pictures/';

// zkopirujeme obrazek do slozky
function img_copy($img, $name) {

global $path;

if(!move_uploaded_file($img, $path . 'ORIG_' . $name . '.jpg')) {
return false;
}
else {
return true;
}
}


// upravi velikost, prida text
// $size = velky NEBO hlavni NEBO maly
function img_resized($img, $size) {

global $path;

// priradime priponu
$img .= '.jpg';

// zjistime rozmery obrazku
$imgSize = getimagesize($path . 'ORIG_' . $img);

// zjistime sirku a vysku
$width_img = $imgSize[0];
$height_img = $imgSize[1];

// maximalni rozmery obrazku
switch($size) {

case 'velky':
$width_max = 500;
$height_max = 625;
$prefix = 'velky_';
break;

case 'hlavni':
$width_max = 250;
$height_max = 313;
$prefix = 'hlavni_';
break;

case 'maly':
$width_max = 100;
$height_max = 125;
$prefix = 'maly_';
break;
}

// jaky je pomer stran
$pomer_width = $width_max / ($width_img / 100);
$pomer_height = $height_max / ($height_img / 100);

// nastavime maximalni rozmerz
if($width_img<$width_max) {
$width = $width_img;
$height = $height_img;
if($height_img>$height_max) {
$width = round($width_img / 100 * $pomer_height);
$height = round($height_img / 100 * $pomer_height);
}
}

if($width_img>$width_max) {
$width = round($width_img / 100 * $pomer_width);
$height = round($height_img / 100 * $pomer_width);
if($height>$height_max) {
$width = round($width_img / 100 * $pomer_height);
$height = round($height_img / 100 * $pomer_height);
}
}

// vytvorime novy obrazek
$img_in = imagecreatefromjpeg($path . 'ORIG_' . $img);

// barevny obrazek
$img_out = imagecreatetruecolor($width, $height);

/*

VYPISE TEXT V OBRAZKU

$bila = imagecolorallocate($img_in, 255, 255, 255);
imagestring($img_in, 1, 0, 0, 'test textu v obrazku ', $bila);
*/

// zkopirujeme novou velikost
imagecopyresampled($img_out, $img_in, 0, 0, 0, 0, $width, $height, $width_img, $height_img);

// ulozime
// tady si muzes hrat stema adresarama, jak potrebujes ...
imagejpeg($img_out, $path . $prefix . $img);
}
?>
gekoncik
Profil
Pořád ta samá chyba. Nemůže otevřít soubor pro zapis. Jak je to možný. Píše mi o když tam ten soubor je nebo tam neni:-(
creck
Profil
tak potom ti jeste doporucim overit si, jestli mas povoleny zapis z venci do adresare ...

http://mirrors.inway.cz/manual/cs/function.chmod.php

chmod($adresar, 0776);
gekoncik
Profil
Hmmm asi fakt nemam práva na přepis, ale ani na: chmod($adresar, 0776); :'-(
Honza Hučín
Profil
Tak by se práva možná dala nastavit ručně, například Windows Commanderem při FTP připojení.
gekoncik
Profil
Tak už mi to nic neříka. Všechno funguje. Teda až na jednu věč. Celý funkce se provede bez vypsaní chybi na stránce. Dokonce funkce imagejpeg mi vratá v podmínce TRUE. Ale prostě nedá žádný výsledek - žádný obrázek není vytvořený jak to? Víte co stím?
Ordek
Profil *
este som sa chcel spytat ako zmensim mierku u toho skriptu?:D sry ze som tak lavy ale nejak tomu nechapem
Toto téma je uzamčeno. Odpověď nelze zaslat.

0