nette image – špatné rozměry
- Paradiso
- Člen | 101
Ahoj, stále nemohu vyřešit problém s importem obrázků.
Mám vzdálené obrázky např.: www.example.cz/…ejakyobr.jpg
a potřebuji je naimportovat k sobě
v cyklu mi jede:
$mlPhoto->path = array('www.example.cz/img/nejakyobr.jpg', 'www.example.cz/img/nejakyobr2.jpg',...)
$explodetPath = explode('/', $mlPhoto->path);
$file = end($explodetPath);
// fullview image //
if(!file_exists($fileDir . '/product/fullview/' . $mlPhoto->product_id)){
mkdir($fileDir . '/product/fullview/' . $mlPhoto->product_id, 0700 );//vytvorení složky
chmod($fileDir . '/product/fullview/' . $mlPhoto->product_id, 0777 ); //nastaveni atributu
}
$image = Image::fromFile($mlPhoto->path);
$image->resize((int)$productImages['fullview']['width'], (int)$productImages['fullview']['height'], Image::SHRINK_ONLY);
$image->save($fileDir . '/product/fullview/' . $mlPhoto->product_id .'/' . $file );
unset($image);
// detailMain image //
if(!file_exists($fileDir . '/product/detailMain/' . $mlPhoto->product_id)){
mkdir($fileDir . '/product/detailMain/' . $mlPhoto->product_id, 0700 );//vytvorení složky
chmod($fileDir . '/product/detailMain/' . $mlPhoto->product_id, 0777 ); //nastaveni atributu
}
$image2 = Image::fromFile($mlPhoto->path);
$image2->resize((int)$productImages['detailMain']['width'], (int)$productImages['detailMain']['height'], Image::SHRINK_ONLY|Image::FIT);
$image2->save($fileDir . '/product/detailMain/' . $mlPhoto->product_id .'/' . $file );
unset($image2);
productImages obsahuje konfiguraci:
productImages: # nastavení obrázků
# Plné zobrazení
fullview:
height: 800
width: 1200
# Detail produktu hlavní
detailMain:
height: 285
width: 325
Vše funguje dobře, ale občas to vytvoří úplné jiné rozměry, kde šířka je 300px (takovou šířku vůbec nikde nemám a ani nemá stahovaný obrázek). Čím by to mohlo být? Vstup jsem kontroloval, je správný. Navíc, pokud zkusím import znovu, stane se to zase u jiných obrázků než před tím.
Mockrát díky za veškeré rady.
Editoval Paradiso (24. 4. 2013 21:07)
- Paradiso
- Člen | 101
originál: http://www.mlsport.cz/…nax-xp-1.jpg
http://www.uplavala.cz/…nax-xp-1.jpg
http://www.uplavala.cz/…nax-xp-1.jpg
Pak se dělají ještě 2 menší a ty sedí, jsou v kódu až po těchto dvou
Nejprve jsem myslel, jestli nezůstává v proměnné $image nějaká nežádaná hodnota, ale ani unset nepomohlo
- Paradiso
- Člen | 101
Tak už jsem to vyřešil. Je to v tom tahání z externího zdroje.
Využil jsem HosipLanovo cURL wrapper
stáhl jsem si obrázky nejprve na hosting a teprve pak jsem je upravoval
nějak takto:
$request = new \Kdyby\Curl\Request($mlPhoto->path);
$request->method = \Kdyby\Curl\Request::DOWNLOAD;
$response = $this->context->curlSender->send($request);
$response->move($tmpFile);
//kód z předešlého postu...