SESSION problem

Programovacie jazyky, rady, poradňa...
Pascalwb
Addict
Addict
Príspevky: 3108
Registrovaný: 09 feb 2010, 23:26

SESSION problem

Príspevok od používateľa Pascalwb »

mam problem, urcite to bude nejaka drobna blobst, ale ani vcera ani dnes sa mi ju nepodarilo najst. Tento script mi isiel. No potreboval som ho prerobit na multiupload . A zrazu mi to vytvori len cierny obrazok s pozadovanimy velkostami. je tam nieco zle. Dik Ked uploadujem *.png to spravi pekny farebny obrazok, ale akonahle to je jpg tak len cierny. Asi nieco stou podmienkou.

Kód: Vybrať všetko

  
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath2 = "kategorie/thumb/";
  $rozmer = getimagesize($_FILES['Filedata']['tmp_name']);
  if($rozmer[1] > $rozmer[0])
    {
    
    $pomer = $rozmer[1]/$rozmer[0];
    if($_FILES['Filedata']['type']=="image/jpeg")
      {
      $povodny = imagecreatefromjpeg($tempFile);
      $novy = imagecreatetruecolor(100/$pomer, 100);
      imagecopyresampled ($novy, $povodny, 0, 0, 0, 0, 100/$pomer, 100, $rozmer[0], $rozmer[1]); 
      imagejpeg($novy,$targetPath2 . $_FILES['Filedata']['name'], 50);
      imagedestroy($novy);
      imagedestroy($povodny);
      }
    else
      {
      $povodny = imagecreatefrompng($tempFile);
      $novy = imagecreatetruecolor(100/$pomer, 100);
      imagecopyresampled ($novy, $povodny, 0, 0, 0, 0, 100/$pomer, 100, $rozmer[0], $rozmer[1]); 
      imagejpeg($novy,$targetPath2 . $_FILES['Filedata']['name'], 50);
      imagedestroy($novy);
      imagedestroy($povodny);
      }
    }
  else  
    {
    $pomer = $rozmer[0]/$rozmer[1];
    if($_FILES['Filedata']['type']=="image/jpeg")
      {
      $povodny = imagecreatefromjpeg($tempFile);
      $novy = imagecreatetruecolor(100, 100/$pomer);
      imagecopyresampled ($novy, $povodny, 0, 0, 0, 0, 100, 100/$pomer, $rozmer[0], $rozmer[1]); 
      imagejpeg($novy,$targetPath2 . $_FILES['Filedata']['name'], 50);
      imagedestroy($novy);
      imagedestroy($povodny);
      }
    else
      {
      $povodny = imagecreatefrompng($tempFile);
      $novy = imagecreatetruecolor(100, 100/$pomer);
      imagecopyresampled ($novy, $povodny, 0, 0, 0, 0, 100, 100/$pomer, $rozmer[0], $rozmer[1]); 
      imagejpeg($novy,$targetPath2 . $_FILES['Filedata']['name'], 50);
      imagedestroy($novy);
      imagedestroy($povodny);
      }
    }
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Re: php imagecopyresampled problem

Príspevok od používateľa eMPiko »

Asi by si mal namiesto imagejpeg(); pouzit v pripade png funkciu imagepng();
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: php imagecopyresampled problem

Príspevok od používateľa audiotrack »

to nehrá žiadnu rolu, ak to png chce uložiť ako jpeg, tak je to správne. Ja tam chybu nevidím. Je to tá verzia ktorá ti podľa tvojích slov "išla" alebo tá čo nejde? Lebo píšeš že ti to prestalo ísť pri pokuse o prerobenie na multiupload ale také nič tam nevidím
juho
Star
Star
Používateľov profilový obrázok
Príspevky: 551
Registrovaný: 11 máj 2007, 21:16

Re: php imagecopyresampled problem

Príspevok od používateľa juho »

to z toho kodu vies ako mu zobrazuje obraz?
ja tam len vidim ze jak to vytvara na zobrazenie treba pouzit prislusnu hlavicku pre dany typ obrazu ale ten kod sem nedal inak hento co tu je by sa dalo dost zredukovat

Kód: Vybrať všetko

$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath2 = "kategorie/thumb/";
  $rozmer = getimagesize($_FILES['Filedata']['tmp_name']);  

    if($_FILES['Filedata']['type']=="image/jpeg")
      $povodny = imagecreatefromjpeg($tempFile);
    else
      $povodny = imagecreatefrompng($tempFile);

      $novy = imagecreatetruecolor(100/$pomer, 100);

    if($rozmer[1] > $rozmer[0])
      imagecopyresampled ($novy, $povodny, 0, 0, 0, 0, 100/($rozmer[1]/$rozmer[0]), 100, $rozmer[0], $rozmer[1]);
    else
      imagecopyresampled ($novy, $povodny, 0, 0, 0, 0, 100, 100/($rozmer[0]/$rozmer[1]), $rozmer[0], $rozmer[1]);

      imagejpeg($novy,$targetPath2 . $_FILES['Filedata']['name'], 50);
      imagedestroy($novy);
      imagedestroy($povodny);
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: php imagecopyresampled problem

Príspevok od používateľa audiotrack »

ak to bola reakcia na mňa, tak áno, viem ako ho vytvára. Vytvára ho ako jpg, a ukladá ho na $targetPath2 . $_FILES['Filedata']['name'] v 50% kvalite. HLavička tu nehrá rolu, nemá tam žiadne zobrazovanie. On tie obrázky z pamäte vzápeätí zruší. Je to čisto upload a uloženie do adresára
juho
Star
Star
Používateľov profilový obrázok
Príspevky: 551
Registrovaný: 11 máj 2007, 21:16

Re: php imagecopyresampled problem

Príspevok od používateľa juho »

nie nebolo ale pise ze pre png mu to stale funguje
Pascalwb
Addict
Addict
Príspevky: 3108
Registrovaný: 09 feb 2010, 23:26

Re: php imagecopyresampled problem

Príspevok od používateľa Pascalwb »

1. ANo predtym mi to islo.
2. Ano tie obrazky uklada ako jpeg
3. ked uploadujem png vsetko funguje.

Toto by malo odoslat ten obrazok
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/jquery.uploadify.js"></script>

<script type="text/javascript">

$(document).ready(function() {

$("#fileUpload3").fileUpload({
'uploader': 'uploadify/uploader.swf',
'cancelImg': 'uploadify/cancel.png',
'script': 'upload_zlozka_test.php',
'folder': 'kategorie/soubor/',
'fileDesc': 'Image Files',
'fileExt': '*.jpg;*.jpeg;*.png',
'multi': true,
'auto': true
});
});

</script>
Toto ulozi velky
f (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = "kategorie/soubory/";
$targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];
include ("uploadify/resize.php");


move_uploaded_file($tempFile,$targetFile);

}

echo '1';
Toto vsetko zatial funguje

Ten v prvom prispevku je ten resize.php.

No skusim nato este pozriet. Zatial to pekne ulozi velku do jednej zlozky zmensenu do druhej, len je cierna. Ci nebude nejaka chyba v tomto.

if($_FILES['Filedata']['type']=="image/jpeg")



//Stale cierne nepomohlo
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Re: php imagecopyresampled problem

Príspevok od používateľa eMPiko »

Skus namiesto if($_FILES['Filedata']['type']=="image/jpeg") pouzit

Kód: Vybrať všetko

$obrazokInfo = getimagesize($_FILES['Filedata']['tmp_name']);
if($obrazokInfo['mime'] == 'image/jpeg')
sharky-no
King
King
Používateľov profilový obrázok
Príspevky: 1681
Registrovaný: 31 okt 2006, 19:53

Re: php imagecopyresampled problem

Príspevok od používateľa sharky-no »

pouzivas ten isty uploader co ja sa mi zda, tak ti sem capnem moj zdrojak ako ja robim tie thumbs

Kód: Vybrať všetko

<?php

function createThumb($spath, $dpath, $maxd) {
 $src=@imagecreatefromjpeg($spath);
 if (!$src) {return false;} else {
  $srcw=imagesx($src);
  $srch=imagesy($src);
  if ($srcw<$srch) {$height=$maxd;$width=floor($srcw*$height/$srch);}
  else {$width=$maxd;$height=floor($srch*$width/$srcw);}
  if ($width>$srcw && $height>$srch) {$width=$srcw;$height=$srch;}  //if image is actually smaller than you want, leave small (remove this line to resize anyway)
  $thumb=imagecreatetruecolor($width, $height);
  if ($height<100) {imagecopyresized($thumb, $src, 0, 0, 0, 0, $width, $height, imagesx($src), imagesy($src));}
  else {imagecopyresampled($thumb, $src, 0, 0, 0, 0, $width, $height, imagesx($src), imagesy($src));}
  imagejpeg($thumb, $dpath);
  return true;
 }
}

if (!empty($_FILES)) {
	$tempFile = $_FILES['Filedata']['tmp_name'];
	$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
	$targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];

    createThumb($tempFile, $targetPath."thumbs/".$_FILES['Filedata']['name'], 300);
    createThumb($tempFile, $targetPath.$_FILES['Filedata']['name'], 600);
		echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);

}
?>
Pascalwb
Addict
Addict
Príspevky: 3108
Registrovaný: 09 feb 2010, 23:26

Re: php imagecopyresampled problem

Príspevok od používateľa Pascalwb »

Dik toto mi uz funguje. zaujimave :-D
sharky-no
King
King
Používateľov profilový obrázok
Príspevky: 1681
Registrovaný: 31 okt 2006, 19:53

Re: php imagecopyresampled problem

Príspevok od používateľa sharky-no »

teda, aby ti to slo aj s tymi jpg a png naraz tak takto

Kód: Vybrať všetko

function createThumb($spath, $dpath, $maxd) {

$type=getimagesize($spath);

if($type['mime']=="image/jpeg")
      $src = @imagecreatefromjpeg($spath);
  else              
      $src = @imagecreatefrompng($spath);  
    
 if (!$src) {return false;} else {
  $srcw=imagesx($src);
  $srch=imagesy($src);
  if ($srcw<$srch) {$height=$maxd;$width=floor($srcw*$height/$srch);}
  else {$width=$maxd;$height=floor($srch*$width/$srcw);}
  if ($width>$srcw && $height>$srch) {$width=$srcw;$height=$srch;}  //if image is actually smaller than you want, leave small (remove this line to resize anyway)
  $thumb=imagecreatetruecolor($width, $height);
  if ($height<100) {imagecopyresized($thumb, $src, 0, 0, 0, 0, $width, $height, imagesx($src), imagesy($src));}
  else {imagecopyresampled($thumb, $src, 0, 0, 0, 0, $width, $height, imagesx($src), imagesy($src));}
  
 if($type['mime']=="image/jpeg")
     imagejpeg($thumb, $dpath);
  else
      imagepng($thumb, $dpath);             
  
  return true;
 }
}
eMPiko mal pravdu, pouzil som tam to co sem on napisal ;)
Pascalwb
Addict
Addict
Príspevky: 3108
Registrovaný: 09 feb 2010, 23:26

Re: SESSION problem

Príspevok od používateľa Pascalwb »

Mam tu este jeden problem. Suvisi to stym uploadom. Tam kde vyberam zlozku mam toto, $_POST pochadza zo select-u. To echo tam mam aby som vedel, či tam ten nazov je.

Kód: Vybrať všetko

$_SESSION['hra_up']=$_POST['hra']; 
echo "session" . $_SESSION['hra_up'];
Potom na tej stranke, kde to uploaduje subor a zmensuje mam.

Kód: Vybrať všetko

session_start();
$hra_up=$_SESSION['hra_up'];
echo $hra_up;     


echo zase len aby som vedel ci tam ta premenna je a je tam.

Ta premenna je vlastne meno zlozky.

A tu nastava problem.

Ak dam v tvare tomto tak to nefunguje.

Kód: Vybrať všetko

if (!empty($_FILES)) {
	$tempFile = $_FILES['Filedata']['tmp_name'];       
  $targetPath = "kategorie/" . $hra_up ."/";
	$targetFile =  str_replace('//','/',$targetPath . "soubory/") . $_FILES['Filedata']['name'];
	
	
	createThumb($tempFile, $targetPath . "thumb/".$_FILES['Filedata']['name'], 100);
      echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
	move_uploaded_file($tempFile,$targetFile);
  
}
Ale ak to dam takto natvrdo, tak vsetko ide.

Kód: Vybrať všetko

if (!empty($_FILES)) {
	$tempFile = $_FILES['Filedata']['tmp_name'];
	$hra_up="lala";                               //Dajme tomu ze nazov zlozky.
  $targetPath = "kategorie/" . $hra_up ."/";
	$targetFile =  str_replace('//','/',$targetPath . "soubory/") . $_FILES['Filedata']['name'];
	
	
	createThumb($tempFile, $targetPath . "thumb/".$_FILES['Filedata']['name'], 100);
      echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
	move_uploaded_file($tempFile,$targetFile);
  
}

nevyjde tam nejaky problem, preklep?

Za rady dakujem
sharky-no
King
King
Používateľov profilový obrázok
Príspevky: 1681
Registrovaný: 31 okt 2006, 19:53

Re: SESSION problem

Príspevok od používateľa sharky-no »

neposielaj to cez session, staci cez post

Kód: Vybrať všetko

          if(!empty($_POST["dir"]))
          {
          $dir="./galery/".$_POST["dir"];
          
          mkdir($dir);
          mkdir($dir."/thumbs");

         } 
                           /* vytvorit direcory a potom upload obrazkov*/  
            echo "<script type='text/javascript'>
              $(document).ready(function() {
                    $('#file_upload').uploadify({
                      'uploader'  : './uploadify/uploadify.swf',
                      'script'    : './uploadify/uploadify.php',
                      'cancelImg' : './uploadify/cancel.png',
                      'folder'    : '".$dir."',
                      'buttonText'  : 'Nahraj súbory',
                      'fileExt'     : '*.jpg;*.gif;*.png',
                      'fileDesc'    : 'Image Files',
                      'multi'       : true,
                      'auto'      : true,       
                    });
                  });
            </script>";
            
            echo '<input id="file_upload" name="file_upload" type="file" />';    
a mas po probleme :) nie?
Napísať odpoveď