Autor | Zpráva | ||
---|---|---|---|
kujeba Profil |
#1 · Zasláno: 27. 1. 2010, 10:55:17 · Upravil/a: kujeba
Dobry den,
pri pouziti knihovny IMagick mi nasledujici kod vyhodi chybu "Fatal error: Uncaught exception 'ImagickException' with message 'Safe mode restricts user to read image: " move_uploaded_file($_FILES["photoFile"]["tmp_name"], "./tmp/".$filename); $thumb=new Imagick("./tmp/".$filename); PHP Version 5.2.6-3ubuntu4.1 imagick module version 2.1.1-rc1 ImageMagick version ImageMagick 6.4.5 2009-06-04 Q16 OpenMP safe_mode = on A safe_mode nelze vypnout. |
||
Alphard Profil |
#2 · Zasláno: 27. 1. 2010, 14:35:57
Hmm, teď budu zlý, ale žádná otázka, žádná odpověď :-)
Můžete se podívat na imagick, ale nevyřešilo se to. Konkrétněji nevím. Co vlastně děláte, nestačila by vám GD knihovna? |
||
kujeba Profil |
#3 · Zasláno: 27. 1. 2010, 14:51:27
Alphard:
Otazka: Jak tuto chybu odstranit, aby IMagick fungoval i na zapnutem safe modu? :o) GD knihovna by mi, bohuzel, asi nestacila. Potrebuju vstupni obrazek (original) zmensit a umistit na prostredek platna. Napriklad: mam original o velikosti 1024x768 a potrebuju z nej dostat obrazek o velikosti 60x60 (Viz 80x80 box) Pomoci GD knihovny dokazu pouze zemnsit obrazek, ale uz ne ho umistit do boxu a vysledek ulozit jako jeden obraz. Nebo ano? Pokud ano, poradite jak? Diky. P.S.: Ale stejne bych radsi vyresil ten problem s IMagick knihovnou, protoze s ImageMagickem umim pracovat, GD knihovnu bych musel studovat a ptat se tady co a jak delat :o) |
||
Alphard Profil |
#4 · Zasláno: 27. 1. 2010, 15:00:18
kujeba:
> Potrebuju vstupni obrazek (original) zmensit a umistit na prostredek platna. > Napriklad: mam original o velikosti 1024x768 a potrebuju z nej dostat obrazek o velikosti 60x60 Není problém, tohle je jednoduché. Je to téměř stejné jako změnšování obrázku, jen se použije troška matematiky při výpočtu konkrétních souřadnic. „Pokud ano, poradite jak?“ Tohle mám někde hotové. Teďka musím odejít od PC, snad si vzpomenu večer. „Ale stejne bych radsi vyresil ten problem s IMagick knihovnou, protoze s ImageMagickem umim pracovat“ Nesetkal jsem se s hostingem, kde by nebyla GD, na rozdíl od IMagick, takže bych radil uvažovat o tom, že se aspoň základy naučíte. |
||
kujeba Profil |
#5 · Zasláno: 27. 1. 2010, 15:42:38
Alphard:
Pokud byste si vzpomel, byl bych nesmirne rad... Potrebuju to vyresit ASAP a nemam s GD vubec zadne zkusenosti, ani nemuzu nikde najit nejakou prehlednou stranku s popisem a prikladama... |
||
AM_ Profil |
#6 · Zasláno: 27. 1. 2010, 17:01:15
Mám obavu, že problém nemusí být v imagick, ale ve špatně nastavených právech na serveru, které prostě soubor neumožní přečíst (ikdyž je to dost divné, jestli se ho zapsat podaří). Zkus si nejdřív místo řádku s new Imagick(...) dát třeba jen file_get_contents("./tmp/$filename"), abys viděl, jestli je problém v imagicku, nebo v přístupu k souboru. Ve druhém případě je jedno jestli imagick nebo GD, nepůjde ani jedno.
|
||
Alphard Profil |
#7 · Zasláno: 27. 1. 2010, 22:35:20
Jestli má AM pravdu, tak vám to stejně nepomůže, ale máte tady tu třídu.
Vykopíroval jsem to z větší třídy a částečně dopsal, tím se i omlouvám, že to není moc objektově uhlazené. Ale když chcete pracovat s OOP, tak jsem to nechal ve třídě. <?php class Image { public $size; // výsledná velikost (čtverec) public $imgFile; // cesta k souboru public $bc; // barva pozadí, zadáno jako pole array(0-255, 0-255, 0-255) private $img; public function create() { $this->img = imagecreatetruecolor($this->size, $this->size); $bc = imagecolorallocate($this->img, $this->bc[0], $this->bc[1], $this->bc[2]); imagefill($this->img, 0, 0, $bc); } public function calculateSize() { list($w, $h) = getimagesize($this->imgFile); if ($w >= $h) { $height = round($h * $this->size / $w); $width = $this->size; } if ($h > $w) { $width = round($w * $this->size / $h); $height = $this->size; } return array($width, $height, $w, $h); } public function addImage() { $i = imagecreatefromjpeg($this->imgFile); list($width, $height, $w, $h) = $this->calculateSize(); $kx = round(($this->size - $width) / 2); $ky = round(($this->size - $height) / 2); imagecopyresampled($this->img, $i, $kx, $ky, 0, 0, $width, $height, $w, $h); } public function getScreen() { $this->create(); $this->addImage(); header('Content-type: image/jpeg'); imagejpeg($this->img); } public function save($dst) { $this->create(); $this->addImage(); imagejpeg($this->img, $dst); } } $img = new Image(); $img->size = 300; $img->imgFile = "./img/e03.jpg"; $img->bc = array(0, 150, 150); $img->save("maly_obrazek.jpeg"); $img->getScreen(); |
||
kujeba Profil |
#8 · Zasláno: 28. 1. 2010, 11:47:06
AM:
„Mám obavu, že problém nemusí být v imagick, ale ve špatně nastavených právech na serveru...“ Tak bohuzel je to problem IMagicku... Nize uvedena trida postavena na knihovne GD funguje... Alphard: „Jestli má AM pravdu, tak vám to stejně nepomůže, ale máte tady tu třídu.“ Nemel, pomohlo. Moc. Dekuji a vrham se do studia GD knihovny, snad dokaze plne nahradit IMagick. |
||
Časová prodleva: 14 let
|
0