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

imagick wrapper klasa

[es] :: PHP :: PHP za početnike :: imagick wrapper klasa

[ Pregleda: 1527 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

VirtualPoP
VirtualPoP

Član broj: 87655
Poruke: 123
*.adsl.eunet.rs.



+24 Profil

icon imagick wrapper klasa14.06.2012. u 18:11 - pre 143 meseci
Radim seminarski na fakultetu. Zadatak je da se izracuna povrsina zatvorene konture proizvoljnog oblika, kontura se ucitava kao .bmp slika.
Problem sam resio. Dakle iskoristio sam Imagick klasu i uptrebio colorFloodfillImage() funkciju itd. Dakle to je reseno i cim odbranim seminarski okacicu ovo ovde posto je bilo vise pitanja na ovu temu a i uopste ima dosta postova kojekuda na tu temu ali resenje ne nadjoh nigde :) A posebno mi je drago sto sam to uradio u php, iako je preporuceno pomocu C++ ili C#.

Elem, kao sto rekoh resio sam problem ali nisam to uradio na elegantan nacin. Sad zelim da kreiram wrapper klasu za Imagick klasu, s tim sto cu samo deo funkcionalnosti klase da podrzim pomocu moje klase. Medjutim kod mi ne radi. Nemam nikakvu kontrolu nad objektom nakon sto izadjem iz konstruktora. Evo jednostavan primer koji bi trebalo da radi a ne radi.

Code:

<?php 
header('Content-Type: png');
class Slika
{
    public function __construct()
    {
        $slika = new imagick('fig2.jpg');
        $slika->setImageFormat( "png" );
        //echo $slika;
    }
     public function __destruct(){ unset($slika); }
    public function getSlika(){return $slika;}
    public function echoSlika(){echo $slika;}
    private $slika;
}
    $sl=new Slika;
    $sl->echoSlika();
    //echo $sl->getSlika();
    $sl->__destruct();
    
//$im = new imagick( 'fig2.jpg' );
//$im->setImageFormat( "png" );
//echo $im; 
?>


Dakle ovako: ukoliko uklonim prvi komentar koji se nalazi u konstruktoru, prikaze se slika pri izvrsenju. Ukoliko uklonim poslednja 3 komentara i kreiram Imagick objekat direkno u telu programa sve radi perfektno. Medjutim ako pokusam da kreiram moju objekat Slika i pokusam da izvrsim echo slike pomocu echoSlika() ili getSlika() ne dobijem nista kad izvrsim stranu. Uopste ne kapiram gde gresim. Moze li mi neko pomoci?

 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
*.dynamic.isp.telekom.rs.

Sajt: https://avramovic.info


+46 Profil

icon Re: imagick wrapper klasa15.06.2012. u 10:20 - pre 143 meseci
Kada se završi izvršavanje konstruktora nestaju sve promenljive definisane u njemu.

Iznad konstruktora stavi private $slika; a svuda u kodu umesto $slika koristi $this->slika i radiće.


Code:
class Slika
{
    private $slika;
    public function __construct()
    {
        $this->slika = new imagick('fig2.jpg');
        $this->slika->setImageFormat( "png" );
        //echo $slika;
    }
     public function __destruct(){ unset($this->slika); }
    public function getSlika(){return $this->slika;}
    public function echoSlika(){echo $this->slika;}

}

Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

VirtualPoP
VirtualPoP

Član broj: 87655
Poruke: 123
*.adsl.eunet.rs.



+24 Profil

icon Re: imagick wrapper klasa15.06.2012. u 19:53 - pre 143 meseci
@Nemanja hvala na odgovoru. To je to nama sta, ja sam takodje pronasao resenje pa da ga okacim mozda bude nekom od koristi:

Citat:

<?php
header('Content-Type: png');
class klasaSlika extends imagick
{
public function __construct()
{
parent::__construct('fig2.bmp');
//$slika = new imagick('fig2.jpg');
//echo $this;
}
public function __destruct(){ unset($slika); }
public function getSlika(){return $this;}
public function echoSlika(){echo $this;}
private $slika;
}
$sl=new klasaSlika();
//$sl->echoSlika();
$sl->colorFloodfillImage('yellow',10,'black',0,0);
echo $sl->getSlika();
file_put_contents ('slike/test_klase.png', $sl->getSlika());
$sl->__destruct();

//$im = new imagick( 'fig2.jpg' );
//$im->setImageFormat( "png" );



//echo $im;
//$sl->echoSlika();
//echo ($width*$height)-$counter;

?>


Dakle napravio sam izvedenu klasu, a posto su funkcije u osnovnoj klasi Imagick deklarisane kao protected, onda mora takodje pokazivac $this, kao sto si i ti Nemanja koristio.
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: imagick wrapper klasa

[ Pregleda: 1527 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

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