Autor | Zpráva | ||
---|---|---|---|
4li1985 Profil |
Zdravím.
Prosím o pomoc. Mám skript, ktorý mi hromadne sťahuje veľké množstvo obrázkov z rôznych webov a následne zmení ich velkosť. Problém je, že niektoré takto spracované obrázky sú "scrambled". Skript: /* * PHP function to resize an image maintaining aspect ratio * http://salman-w.blogspot.com/2008/10/resize-images-using-phpgd-library.html * * Creates a resized (e.g. thumbnail, small, medium, large) * version of an image file and saves it as another file */ define('THUMBNAIL_IMAGE_MAX_WIDTH', 260); define('THUMBNAIL_IMAGE_MAX_HEIGHT', 520); function generate_image_thumbnail($source_image_path, $thumbnail_image_path) { list($source_image_width, $source_image_height, $source_image_type) = getimagesize($source_image_path); switch ($source_image_type) { case IMAGETYPE_GIF: $source_gd_image = imagecreatefromgif($source_image_path); break; case IMAGETYPE_JPEG: $source_gd_image = imagecreatefromjpeg($source_image_path); break; case IMAGETYPE_PNG: $source_gd_image = imagecreatefrompng($source_image_path); break; } if ($source_gd_image === false) { return false; } $source_aspect_ratio = $source_image_width / $source_image_height; $thumbnail_aspect_ratio = THUMBNAIL_IMAGE_MAX_WIDTH / THUMBNAIL_IMAGE_MAX_HEIGHT; if ($source_image_width <= THUMBNAIL_IMAGE_MAX_WIDTH && $source_image_height <= THUMBNAIL_IMAGE_MAX_HEIGHT) { $thumbnail_image_width = $source_image_width; $thumbnail_image_height = $source_image_height; } elseif ($thumbnail_aspect_ratio > $source_aspect_ratio) { $thumbnail_image_width = (int) (THUMBNAIL_IMAGE_MAX_HEIGHT * $source_aspect_ratio); $thumbnail_image_height = THUMBNAIL_IMAGE_MAX_HEIGHT; } else { $thumbnail_image_width = THUMBNAIL_IMAGE_MAX_WIDTH; $thumbnail_image_height = (int) (THUMBNAIL_IMAGE_MAX_WIDTH / $source_aspect_ratio); } $thumbnail_gd_image = imagecreatetruecolor($thumbnail_image_width, $thumbnail_image_height); imagecopyresampled($thumbnail_gd_image, $source_gd_image, 0, 0, 0, 0, $thumbnail_image_width, $thumbnail_image_height, $source_image_width, $source_image_height); imagejpeg($thumbnail_gd_image, $thumbnail_image_path, 100); imagedestroy($source_gd_image); imagedestroy($thumbnail_gd_image); return true; } $r_updates = mysqli_query($connect, "SELECT * FROM updates"); while($updates = mysqli_fetch_array($r_updates)) { $file_url = $_SERVER["DOCUMENT_ROOT"] . ('/images/updates/'. $updates['id'] .'.jpg'); $thumbnail_url = $updates['thumbnail_url']; copy($thumbnail_url, $file_url); generate_image_thumbnail($file_url, $file_url); } Viete mi poradiť? Ďakujem. |
||
Keeehi Profil |
#2 · Zasláno: 22. 2. 2021, 23:39:42
4li1985:
Ten obrázek není dostupný. Vidíme jen, že stránka kde by měl být nahraný je v rekonstrukci. |
||
NoxOne Profil |
#3 · Zasláno: 22. 2. 2021, 23:55:05
Já bych to viděl na problém se stažením obrázku. Pokud jich taháš hodně tak bych na to použil WGET a teprve potom bych je lokálně zpracoval. Z tvého scriptu nevidím jak ty obrázky stahuješ.
Správný postup by byl : najít obrázek stáhnout do dočasné složky upravit jak potřebuješ uložit kam chceš smazat dočasný obrázek |
||
4li1985 Profil |
Keeehi:
Bolo to dočasne nedostupné. Už by mal byť vidieť. Nie všetky obrázky takto dopadnú. Len niektoré, ostatné sú OK. NoxOne: Obrázky sťahujem pomocou funkcie copy() copy($thumbnail_url, $file_url); generate_image_thumbnail($file_url, $file_url); |
||
Keeehi Profil |
4li1985:
Nejsem na tohle expert, ale zdá se mi, že tohle by mohlo vzniknout, pokud se obrázku stáhne třeba jen půlka dat. První věcí co bych zkontroloval tedy je, zda vůbec jsou ty vstupní obrázky v pořádku. |
||
NoxOne Profil |
#6 · Zasláno: 23. 2. 2021, 13:54:32
4li1985:
Funkcí copy stahuješ obrázky z jiných serverů ? To je šílený. Přesně jak jsem psal a "Keeehi" ti to píše taky. Překontroluj si zda jsou zdrojové/stažené obrázky v pořádku. Pokud ne tak musíš stahovat něčím co počítá s možností přerušení stahování. WGET nebo CuRL postup jak bych to dělal já jsem ti už napsal. |
||
Časová prodleva: 3 roky
|
0