Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pravljenje thumbnailova

[es] :: PHP :: Pravljenje thumbnailova

Strane: 1 2

[ Pregleda: 5984 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Dejan Krstic

Član broj: 479
Poruke: 2558



+1 Profil

icon Pravljenje thumbnailova03.01.2004. u 16:36 - pre 246 meseci
Imam direktorijum koji u sebi ima razne slike. Treba da napravim stranicu koja ce da izlista sve te slike ali ne cele nego npr 32x32pix. Da li zna neko jel moguce iz php-a uraditi to (pogledao sam Image functions ali tamo nema resize) ili treba da trazim neke f-je po netu?
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Pravljenje thumbnailova03.01.2004. u 17:41 - pre 246 meseci
imagecopyresized za GD biblioteku

Code:

/* 
* $location je abs. putanja do slike
* is_gd2() je funkcija koja proverava verziju GD biblioteke 
*/

$src_img=imagecreatefrompng($location);
$old_x=imageSX($src_img);
$old_y=imageSY($src_img);

$height=$old_y/($old_x/130);
if(is_gd2()==FALSE) 
{
   /* GD1.x */
   $dst_img=ImageCreate(130,$height);
   imagecopyresized($dst_img,$src_img,0,0,0,0,130,$height,$old_x,$old_y);
}
else 
{
   /* GD2.x */
   $dst_img=ImageCreateTrueColor(130,$height);
   imagecopyresampled($dst_img,$src_img,0,0,0,0,130,$height,$old_x,$old_y);
}

/* slika je sada dostupna u $dst_img GD objektu */
          
header("Content-type: image/png");
imagepng($dst_img);
imagedestroy($dst_img);


http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

Dejan Krstic

Član broj: 479
Poruke: 2558



+1 Profil

icon Re: Pravljenje thumbnailova03.01.2004. u 18:17 - pre 246 meseci
Citat:
Goran Rakić:
Code:


header("Content-type: image/png");
imagepng($dst_img);
imagedestroy($dst_img);



To je ok ako hocu samo taj jedan thumbnail da prikazem i nista vise ali ta skripta treba da se izvrsi nad gomilom slika i da thumbnailove prikaze na html stranici....
 
Odgovor na temu

NikolaVeber
NikolaVeber
neradnik na porodiljskom bolovanju
Karlsruhe

Član broj: 5115
Poruke: 1254
*.ptt.yu

Jabber: nikolaveber@jabber.org
ICQ: 121532865


Profil

icon Re: Pravljenje thumbnailova03.01.2004. u 19:02 - pre 246 meseci
treba da taj fajl pozoves na mestu svakog tumbnail-a. Znaci da imas php skriptu koja za svaki fajl u direktorijumu postavlja <img> tag, a src=slika.php?imgName=imeSlike, na primer, gde je slika.php fajl sa kodom koji je Goran napisao. Cini mi se da moras da ga stavis u poseban fajl, jer mora da zada headers pre bilo cega drugog.
Pop Servis "Paradise Tours"
Java User Group Karlsruhe
IT Dan - Srbija

Officer, I saw the driver who hit me - his name was Johnny Walker.
 
Odgovor na temu

Dejan Krstic

Član broj: 479
Poruke: 2558



+1 Profil

icon Re: Pravljenje thumbnailova03.01.2004. u 23:18 - pre 246 meseci
Da, jasno. A mora u poseban fajl jer nije moguce slati vise hedera.
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.179.EUnet.yu



+1 Profil

icon Re: Pravljenje thumbnailova03.01.2004. u 23:58 - pre 246 meseci
Ili koristiš ImageMagick koji je besplatan, pravi mnogo bolji kvalitet kada se resize-uje (mada za 32 x 32 i nije toliko važno jer se tu ionako ništa ne vidi) i lako se koristi.

Za gd, evo ti jedan kod koji lista sadržaj foldera i radi ono što tebi treba (ovo sam ja onomad nešto testirao, radi ali ne garantujem za svaki slučaj jer sam čisto probao):

thumb.php:
Code:

<?php
$jpegDir    = isset($folder)    ? $folder     : "";    // folder to copy
$destImg    = isset($dest_img)    ? $dest_img : "";    // destination image
$picMaxW    = isset($picMaxW)    ? $picMaxW    : 100;    // maximum width
$picMaxH    = isset($picMaxH)    ? $picMaxH    : 100;    // Maximum height

$jpeg        = $jpegDir .'/'. $img;
$destJpeg    = $jpegDir .'/'. $destImg;

if ($d=getimagesize($jpeg) ){
    $picW = $d[0];
    $picH = $d[1];

    $percentW = $picMaxW / $picW;
    $percentH = $picMaxH / $picH;

    $percent = ($percentW < $percentH) ? $percentW : $percentH;
    $sizeW = intval($picW * $percent);
    $sizeH = intval($picH * $percent);

    header('Content-type: image/jpeg');

    $src    = imagecreatefromjpeg($jpeg);
    $dst    = imagecreate($sizeW, $sizeH);
    $white = imagecolorallocate($dst,255,255,255);        // background color
    // imagefill ($dst,0,0,$white);
    // imagecopyresampled($dst,$src, 0, 0, 0, 0, $sizeW, $sizeH, $picW, $picH);
    imagecopyresized ($dst, $src, 0, 0, 0, 0, $sizeW, $sizeH, $picW, $picH);
//    imagejpeg($dst, $destJpeg);        // to create file on disk and replace old file
    imagejpeg($dst);
    imagedestroy($dst);
    imagedestroy($src);
    return true;
}
return false;
?>


Bolji kvalitet daje ...resampled... nego ...resized... ali je moraš da imaš noviju verziju GD (u vreme kada sam ja ovo testirao, na većini komercijalnih servera nije postojala, pretpostavljam da je sada ima)
Kao što vidiš, ako hoćeš da pišeš thumbnails u file, skloni komentar ispred linije
// imagejpeg($dst, $destJpeg); // to create file on disk and replace old file


example (računa se da su sve slike u podfolderu "images"):
Code:

<html>
<head>
<title>Thumbnail create test</title>
</head>

<body>
<?php
if($dir=opendir('images')){
    while($file=readdir($dir)){
        if('.'==$file || '..'==$file)    continue;
        if(is_dir('images/'.$file))        continue;
        echo "\r\n";
//        printf('<a href="images/%s"><img src="thumb.php?img=%s" border="0" alt="%s"></a>', $file, $file, $file);
        printf('<a href="images/%s"><img src="thumb.php?img=%s" border="0" alt="%s"></a>', $file, $file, $file);
    }
    closedir($dir);
}

?>
</body>
</html>


Goran Pilipović fka bluesman
 
Odgovor na temu

Dejan Krstic

Član broj: 479
Poruke: 2558



+1 Profil

icon Re: Pravljenje thumbnailova04.01.2004. u 22:34 - pre 246 meseci
Evo mog resenja za generisanje thumb-a.

Code:

<?php
// prvo definisem max velicinu thumb-a
define("thumb_size", 100);

// onda kazem da ucita sliku ciji je naziv primio preko url-a
$im = imagecreatefromjpeg("pics/".$_GET['image']);

// pa onda odredjujem koliko puta se slika treba smanjiti
$ratio = (imagesx($im) > imagesy($im)) ? imagesx($im) / thumb_size : imagesy($im) / thumb_size;

// kreiram novu sliku umanjenu za $ratio puta
$dst_img=imagecreatetruecolor($newx = imagesx($im) / $ratio, $newy = imagesy($im) / $ratio);

// resample stare u novu
imagecopyresampled($dst_img, $im, 0, 0, 0, 0, $newx, $newy, imagesx($im), imagesy($im));

// saljem heder
header("Content-type: image/jpeg");

// i najzad thumb
imagejpeg($dst_img);
?>


Jedino je problem sto malo dugo traje to. Izgleda cu ipak morati da se pozabavim kesiranjem.
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Pravljenje thumbnailova05.01.2004. u 00:42 - pre 246 meseci
zanimljivo je što na ovoj temi postoje 3 rešenja koja su gotovo indentična.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.178.EUnet.yu



+1 Profil

icon Re: Pravljenje thumbnailova05.01.2004. u 01:07 - pre 246 meseci
Zanimljivo je koliko su neki osetljivi. :-)

Ja ne bih postovao kod da nije čovek postavio pitanje
Citat:

Imam direktorijum koji u sebi ima razne slike.


a koliko vidim toga u tvom kodu nema. No izvini ako sam te uvredio time što sam postovao svoj kod.

[Ovu poruku je menjao bluesman dana 05.01.2004. u 03:10 GMT]
Goran Pilipović fka bluesman
 
Odgovor na temu

stdlib.h

Član broj: 13434
Poruke: 240
*.ppp-bg.sezampro.yu



+1 Profil

icon Re: Pravljenje thumbnailova05.01.2004. u 01:09 - pre 246 meseci
Dejane, jel postoji mogucnost da ovaj tvoj kod u postu iznad Goranovog pokupi sve slike iz pics foldera i generise vise thumbova na stranici sa linkom ka originalnoj fotki na svakom thumbu?

bluesmanov kod upravo to radi, medjutim, thumbovi koje generise od fotki se ne vide na stranici iz nekog razloga :( tvoj kod sljaka ok, ali vraca samo po jednu fotku koju pozoves sa ?image=fotka.format bez linka ka originalu i bez ikakve ideje u mojoj glavi kako da generisem i formatiram raspored vise thumbnailova na stranici :(

tnx!
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.178.EUnet.yu



+1 Profil

icon Re: Pravljenje thumbnailova05.01.2004. u 02:10 - pre 246 meseci
Ne znam zašto nebi radio... doduše ono je stari kod i nisam ga pipnuo odavno a ko zna šta sam radio dok sam testirao (vidiš commented linije... ). Da li si lepo uneo putanje (pročitaj komentare)... nije ni bitno, možda ti je važniji donji deo koda koji kupi slike iz foldera i poziva script koji generiše thumbnails.
Goran Pilipović fka bluesman
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.178.EUnet.yu



+1 Profil

icon Re: Pravljenje thumbnailova05.01.2004. u 02:17 - pre 246 meseci
A pošto sam spominjao imagemagick, evo šta on može jednim potezom:

To convert a directory full of JPEG images to thumbnails, use:
mogrify -size 120x120 *.jpg -resize 120x120 +profile "*"

In this example, '-size 120x120' gives a hint to the JPEG decoder that the images are going to be downscaled to 120x120, allowing it to run faster by avoiding returning full-resolution images to ImageMagick for the subsequent resizing operation. The '-resize 120x120' specifies the desired dimensions of the output images. It will be scaled so its largest dimension is 120 pixels. The '+profile "*"' removes any ICM, EXIF, IPTC, or other profiles that might be present in the input and aren't needed in the thumbnails.

a pri tom možeš da ga "pozoveš" iz PHP preko>
system ('mogrify -size 120x120 *.jpg -resize 120x120 +profile "*"')
Goran Pilipović fka bluesman
 
Odgovor na temu

Dejan Krstic

Član broj: 479
Poruke: 2558



+1 Profil

icon Re: Pravljenje thumbnailova05.01.2004. u 13:44 - pre 246 meseci
@Goran Rakic

Ja sam na osnovu onog sto sam skapirao iz vasih kodova pokusao da napravim malo jednostavniji kod i to sam i uspeo (jos nisam naisao na bug). Znaci sva tri koda rade skoro isto samo sto sam ja pokusao to maksimalno da pojednostavim i skratim.

Izgleda da sam zaboravio na pocetak svog koda da dodam jednu liniju:

Code:

define("sujeta", false);



Citat:
stdlib.h:
Dejane, jel postoji mogucnost da ovaj tvoj kod u postu iznad Goranovog pokupi sve slike iz pics foldera i generise vise thumbova na stranici sa linkom ka originalnoj fotki na svakom thumbu?

bluesmanov kod upravo to radi, medjutim, thumbovi koje generise od fotki se ne vide na stranici iz nekog razloga :( tvoj kod sljaka ok, ali vraca samo po jednu fotku koju pozoves sa ?image=fotka.format bez linka ka originalu i bez ikakve ideje u mojoj glavi kako da generisem i formatiram raspored vise thumbnailova na stranici :(

tnx!


Moja aplikacija upravo to i radi samo sto sam ja postova samo onaj fajl koji vraca jpeg u zavisnosti od toga koje je ime fajla primio GET metodom. Evo sada i glavnog fajla koji moze da stavlja thumbove u proizvoljan broj kolona.

Code:

<?php define("kolone", 7); // ovde definisem koliko cu kolona ?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<?php

$dir = "pics/"; // ovde kaze kako se zove direktorijum
$dh = opendir($dir); // trazim handler za taj direktorijum
$brojac = 0; // postavljam brojac kolone na nulu
?>

<body>
<table border="1" align="center">
  <tr>
<?php
while (($file = readdir($dh)) != false) // dok god nalazis fajlove u direktorijumu vrti se kroz sledeci blok

{
if (($file == ".") || ($file == "..")) continue; // ne treba komentar
$brojac++; // povecavam brojac
?>

    <td><a href="pera.php"><img src="image.php?image=<?php echo $file; ?>"></a></td>
<?php
if ($brojac == kolone) { echo "</tr><tr>"; $brojac = 0; } // ukoliko je brojac kolona stigao do odredjenog broja predji u sledeci red

}
?>
</table>
</body>
</html>


Naravno ovo se da uraditi mnogo lepse ali to mi je bilo samo za probu a i necu ovde da gnjavim sa smartyjem.
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.beotel.net

Sajt: localhost


+5 Profil

icon Re: Pravljenje thumbnailova05.01.2004. u 14:30 - pre 246 meseci
ok.. nema razloga za podizanje strasti.. sve je u redu..


// ..move along people.. nothing (smart) to see here.. :-P

 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Pravljenje thumbnailova05.01.2004. u 17:54 - pre 246 meseci
ala me ubiste u pojam, a ja probao da se našalim. žao mi je ako sam nekog povredio komentarom.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.49.EUnet.yu



+1 Profil

icon Re: Pravljenje thumbnailova06.01.2004. u 01:57 - pre 246 meseci
Pa, Gorane, obično ljudi kada se šale stave bar neki "hint" da je u pitanju šala, ono tvoje je zvučalo prilično "detinjasto", nisi nikoga povredio već si tu zvučao povređen pa sam pomislio da si hipersenzitivan :-)

Goran Pilipović fka bluesman
 
Odgovor na temu

Dejan Krstic

Član broj: 479
Poruke: 2558



+1 Profil

icon Re: Pravljenje thumbnailova07.01.2004. u 21:14 - pre 246 meseci
Imam sada jedan problem.

Kada mi browser izlista stranicu sa thumbovima sve bude ok ali kada kliknem na neki thumb i onda na Save As.... samo mogu da ga snimim kao bmp iako je browseru explicitno preko hedera receno da se radi o image/jpeg sadrzaju. Da li neko zna u cemu je problem?
 
Odgovor na temu

Dejan Krstic

Član broj: 479
Poruke: 2558



+1 Profil

icon Re: Pravljenje thumbnailova19.01.2004. u 13:59 - pre 245 meseci
Mozda je trebalo malo bolje da objasnim o cemu se radi:

Direktorijum u kom se nalaze slike je skroz zasticen i nije mu moguce prici direktno. Znaci ima .htaccess fajl u kom pise "Deny From All". Jedini nacin da se slika prikaze na ekranu je da je prosledi php.

Prikazivanje ide otprilike ovako:

U fajlu view_pic.php se nalazi ovakav tag: <img src="show_pic.php?name=slika.jpg">

Kada se pozove show_pic.php on uradi nesto ovako:

Code:

$slika = file_get_contents($_GET['name']);
header("Content-type: image/jpeg");
echo $slika;


Kada u IE pokusam da idem na Save As.... dobijem samo mogucnost da snimim kao bmp (sto znaci slika zauzima >1MB). E sad problem je u tome sto korisnik koji gleda sliku MORA da bude u mogucnosti da je snimi na svoj racunar onakvu kakva jeste. Nikako nisam uspeo da resim ovaj problem pa sam dosao i na ideju da ubacim na tu stranicu jedno dugme "Save" pa da korisnik uradi download.... Ima neko ideju?
 
Odgovor na temu

bOkIcA
Bojan Abramovic
Novi Sad

Član broj: 1808
Poruke: 520
*.metrohive.net

Sajt: www.bokica.com


Profil

icon Re: Pravljenje thumbnailova19.01.2004. u 14:46 - pre 245 meseci
Evo ti nesto sto sam nasao a davno naskrabao.

Code:
<?php
  $sta_je_za_download = $_GET['file'];
  $putanja_do_fajla = $_GET['path'];
  $velicina_fajla = $_GET['size'];
  if ($sta_je_za_download != ""){
     header("Cache-control: private");
     header("Content-Disposition: attachment; filename=\"".$sta_je_za_download ."\"");
     header("Content-length: $velicina_fajla");
     header("Content-type: image/pjpeg");
     $fp = fopen($putanja_do_fajla.$sta_je_za_download, 'rb');
     fpassthru($fp);
     exit;
  }
?>


Znam da je radilo u IE i Mozilli.

A za custom mime odnosno Content-type pogledaj:
http://www.phpconsulting.com/mimes.php
 
Odgovor na temu

zi::
Igor Marinović
Manufaktura doo Internet inženjering
Palić

Član broj: 18090
Poruke: 642
*.tippnet.co.yu.

ICQ: 7715569
Sajt: www.marinowski.com


Profil

icon Re: Pravljenje thumbnailova19.01.2004. u 14:59 - pre 245 meseci
Probaj ovaj kod:

Code:

<?
header("Content-Type: image/jpg");
header("Content-Disposition: inline; filename=$slika1");
readfile($slika2);
?>


Primeti da je $slika1 naziv slike koju će user videti, a $slika2 path do slike koju hoćeš da prikažeš.

Može se jos i reći koliko će biti velika slika, pa da browser zna koliko % je učitano,
ali radi i ovako.

 
Odgovor na temu

[es] :: PHP :: Pravljenje thumbnailova

Strane: 1 2

[ Pregleda: 5984 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.