Upload obrázků – velikost souboru
- weckho
- Člen | 94
Ahoj,
mám na webu upload obrázků při využití Nette image. Aplikace mi však každý obrázek datově zvětší – z obrázku o velikosti několik kb udělá 5Mb soubor. To vede k tomu, že při uploadu několika obrázků současně celé nahrávání spadne, protože je překročen časový limit. Nenapadá mě, v čem by mohl být problém. Zde je kód, který soubory zpracovává:
$image = $values['image'];
if ($image->isOK()) {
$image = Image::fromFile($image);
/*if($image->getWidth() > 860 || $image->getHeight() > 515){
$image->resize(860, 515, Image::STRETCH);
}*/
$image->alphaBlending(false);
$image->saveAlpha(true);
$image_name = hexdec($values['image']);
if (file_exists('images/gallery/' . $image_name . '.png')) {
$image_name = $image_name . hexdec($values['image']);
}
$path = 'images/gallery/' . $image_name . '.png';
$image->save($path, 80, Image::PNG);
$iname = $image_name . '.png';
} else {
throw new \IOException('Nepodařilo se nahrát obrázek.');
}
Díky za radu!
- bojovyletoun
- Člen | 667
Jako že se ti v prohlížeči ukazuje v progressbaru(třeba v opeře), že nahráváš 5MB? Ale s tím není problém (obecně, bez nette). Jinak nevím, kde hledat problém. Soubor se ukládá pomalu? Nebo převod do PNG trvá dlouho(v tom případě zkus snížit kvalitu třeba na 5)? . Pozn: termín kvalita je blbý, spíš se jedná o kompresi, ptž png je bezztrátéový
- Mikulas Dite
- Člen | 756
Pochopil jsem to tak, že pokud jako vstup dáš 5KB a uložíš znovu přes Nette image, tak ti to vyhodí něco velikého. To se dá očekávat, třeba Photoshop dokáže s kompresí png udělat kouzla (vynechá barvy, pattern, web safe, matting, atp.) a naopak bych předpokládal, že po prohnání php knihovnou to trochu vyroste. Ale z 5KB na megabajty? To je divný.
Editoval Mikulas Dite (16. 4. 2011 11:08)
- Patrik Votoček
- Člen | 2221
pokud uploadneš JPEG (fotku) kterej má třeba 500kb a uložíš ho jako PNG tak se nemáš čemu divit že ti několika násobně vzrostě objem dat. PNG se vzhledem ke svému kompresnímu algoritmu na ukládání fotek vůbec ale vůbec nehodí.