Autor | Zpráva | ||
---|---|---|---|
kikinet Profil |
#1 · Zasláno: 29. 3. 2014, 13:26:36
Zdravím,
netušíte někdo, proč tato funkce na zmenšení obrázku nefunguje? Přesunutí do adresáře proběhne v pořádku. Pak se mi ale zdá, že do $image se nic nenačte... Chybové hlášky nic nevypíšou (jsou zapnuté). Už fakt nevím, jak na to. //zmenšení nejdelší strany na 600px $size = getImageSize($photos[$keys[$i]]['tmp_name']); $ratio = $size[1]/$size[0]; //poměr stran $dest = "./".$photos[$keys[$i]]['url']['url_orig'].$name; move_uploaded_file($photos[$keys[$i]]['tmp_name'], $dest); //přesunutí fotky do adresáře $image = imageCreateFromJpeg($dest); //zmenšení $imgorig = imageCreateTrueColor(600/$ratio,600); //černý obrázek požadované velikosti pro zmenšenou fotku $imgthumb = imageCreateTrueColor(150,150); // ------- || ------- miniaturu fotky $orig = imageCopyResampled($imgorig, $image, 0, 0, 0, 0, 600/$ratio, 600, $size[0], $size[1]); $thumb = imageCopyResampled($imgthumb, $image, 0, 0, 0, ($size[1]-150)/2, 150, 150, $size[0], $size[1]); //uložení fotek do adresáře move_uploaded_file($orig, $dest); move_uploaded_file($thumb, "./".$photos[$keys[$i]]['url']['url_thumb'].$name); |
||
Alphard Profil |
#2 · Zasláno: 29. 3. 2014, 13:53:39
Pro začátek výsledné fotky ukládat pomocí imagejpeg(), move_uploaded_file() není funkce na všechno :-)
|
||
Chro Profil |
#3 · Zasláno: 29. 3. 2014, 13:53:50
Tak nejprve bych hlavně uploadovaný soubor uložil. Až pak bych s ním dále pracoval s funkcemi jako imagecreate... imagecopyresampled atd. Upravený obrázek se ukládá funkcí např imagejpeg se dvěma či třemi parametry (zdroj, název souboru, kvalita).
|
||
kikinet Profil |
Alphard:
Dobře, vyzkouším. Chro: Jak už jsem psala, uložení obrázku do adresáře proběhne v pořádku. Takže obrázek uložený mám, ale už mi nejde zmenšit. Alphard: Tak jo, jak jsi teda řekl, přepsala jsem to na imagejpeg() imageJpeg($orig, $dest); imageJpeg($thumb, "./".$photos[$keys[$i]]['url']['url_thumb'].$name); |
||
Alphard Profil |
#5 · Zasláno: 29. 3. 2014, 20:39:35
kikinet:
„Což znamená, že mu v prvním parametru nepředávám obrázek?“ Správně, chybu je třeba hledat někde výše, protože $orig = imageCopyResampled() zřejmě vrací false , tj. skončilo chybou.
Pokud nejde o vytvoření si vlastního řešení, doporučuji využít PHP triky - Zmenšování obrázků. |
||
kikinet Profil |
#6 · Zasláno: 29. 3. 2014, 20:57:47
Alphard:
To bude asi problém, je to práce do školy a tam bych měla přijít se svým řešením (i když tohle bude určitě vyladěnější). Kouknu se na to jeho řešení ještě. Jinak si myslím, že chyba bude ještě výš $image = imageCreateFromJpeg($dest); . Tahle funkce mi totiž nevyhodí žádný obrázek, jen ikonu "nefunkčního" jpg obrázku. Ovšem zadaná cesta se mi zdá správná, jelikož přes tuto adresu ukládám soubor a ten se v pořádku uloží.
|
||
Alphard Profil |
#7 · Zasláno: 29. 3. 2014, 21:03:47
$image a další podobné nelze rozumně prohlížet. Je to v podstatě jen odkaz na úsek paměti (zjednodušeně řečeno). Obrázek z toho udělá právě až funkce imageJpeg().
|
||
Chro Profil |
#8 · Zasláno: 29. 3. 2014, 21:04:19
Výstup funkcí imagecreate... v případě úspěchu je ukazatel na zdroj, nikoli nějaký zobrazitelný obrazový formát. PHP následně z obrázkem manipuluje interně ve vlastním formátu gd nebo gd2, podle verze knihovny GD.
|
||
kikinet Profil |
#9 · Zasláno: 29. 3. 2014, 21:08:13
Alphard, Chro:
pokud dám pod tuto funkci ještě header('Content-Type: image/jpeg'); imagejpeg($image); |
||
Alphard Profil |
#10 · Zasláno: 29. 3. 2014, 21:13:20
kikinet [#9]:
Ano, přesně tak. Když to ale nefunguje, je lepší tu hlavičku zakomentovat, protože jinak neuvidíte chybovou hlášku, jen ikonu nefunkčního obrázku. |
||
kikinet Profil |
#11 · Zasláno: 29. 3. 2014, 21:23:29
Alphard:
Pokud to dám bez hlavičky, zobrazí se mi tohle. |
||
Chro Profil |
#12 · Zasláno: 29. 3. 2014, 21:54:27
Ono by bylo nejlepší začít znova se skriptem po části s uložením obrázku po uploadu a krok za krokem se dobrat výsledku, bo nikdo neví, jak ten skript máš nyní koncipovaný, stejně jako v [#1] asi těžko.
|
||
kikinet Profil |
Chro:
Je pořád stejný. Až na změnu v [#4]. Nic jiného jak to upravit, mě totiž nenapadá. Teď to krok za krokem probírám, očividně se to sekne rovnou na imageCreateFromJpeg(), protože php nehlásí žádnou chybu a obrázek z této funkce nejde nijak zobrazit. Funguje pouze uložení do adresáře. Potom používám stále stejnou cestu. Teď mě ještě napadá, nemůže to být třeba nějakým omezením serveru? Alphard, Chro: tak nevím čím to je, ale teď to jede. Uložení, zmenšení, všechno šlape. Jen fakt netuším proč to teď jede a předtím ne... Záhada. Děkuju za spolupráci :) |
||
peta Profil |
#14 · Zasláno: 31. 3. 2014, 08:10:35
(novy radek) <?php header('Content-Type: image/jpeg'); imagejpeg($image); ?> |
||
Časová prodleva: 12 let
|
0