Autor | Zpráva | ||
---|---|---|---|
it47 Profil |
#1 · Zasláno: 15. 3. 2016, 11:17:26
Ahojte,
mam skript na zmensovanie obrazkov, avsak kvalita zmensenych obrazkov nie je taka vyborna, ako ked ho zmenis, cez nejaky softver. Ten skript ma aj 10 rokov, viete mi prosim poradit, ako vytvorit zmensenie obrazku so 100% kvalitou? Vopred dakujem velmi pekne. |
||
Keeehi Profil |
#2 · Zasláno: 15. 3. 2016, 12:09:10
it47:
Chceš si obrázky zmenšit sám, nebo to potřebuješ automatizovat? |
||
Chro. Profil |
#3 · Zasláno: 15. 3. 2016, 13:30:47
Asi nejdůležitější je při zmenšování obrázku pomocí GD knihovny nepoužívat funkci imagecopyresized(), ale imagecopyresampled(), která obrázek tzv. převzorkuje. Kvalita je poté o poznání lepší. Po zmenšení je vhodné obrázek ještě jemně doostřit. Viz problem s kvalitou obrazku pri resize s php
|
||
it47 Profil |
#4 · Zasláno: 16. 3. 2016, 01:01:50
Keeehi:
Potrebujem spravit upload obrazkov, pri ktorom vytvorim viac rozmerov obrazkov Chro.: Super, dakujem pekne. Nahodou prosim Ta nejaky uceleny kod nemas aj s tym doostrenim, nech si to mozem rovno vyskusat? Vopred dakujem velmi pekne. |
||
Chro. Profil |
#5 · Zasláno: 16. 3. 2016, 14:35:56
Tak předpokládejme, že si ten obrázek po uploadu uložil do složky upload. Je třeba ho znova otevřít a vytvořit náhled. Psal jsem z hlavy, bez ošetření chyb.
<?php //zde tvůj kód na uložení obrázku po uploadu //níže kód na vytvoření a uložení náhledu //načtení obrázku z např. složky upload $obr_nazev = 'upload/novefoto.jpg'; $obr_obsah = file_get_contents($obr_nazev); $obr_zdroj = imagecreatefromstring($obr_obsah); list($obr_sirka, $obr_vyska) = getimagesize($obr_nazev); //vytvoření náhledu $nahled_sirka = 200; $pomer = $obr_sirka / $obr_vyska; $nahled_vyska = floor($nahled_sirka / $pomer); $nahled_zdroj = imagecreatetruecolor($nahled_sirka, $nahled_vyska); imagecopyresampled($nahled_zdroj, $obr_zdroj, 0, 0, 0, 0, $nahled_sirka, $nahled_vyska, $obr_sirka, $obr_vyska); //zaostreni nahledu $matrix = array( array(-1.2, -1, -1.2), array(-1, 20, -1), array(-1.2, -1, -1.2) ); $delitel = array_sum(array_map ('array_sum', $matrix)); imageconvolution($nahled_zdroj, $matrix, $delitel, 0); //uložení náhledu do např. složky thumbs s 90% kvalitou $nahled_nazev = 'th'.$nahled_sirka.'_'.$obr_nazev; imagejpeg($nahled_zdroj, 'thumbs/'.$nahled_nazev, 90); imagedestroy($obr_zdroj); imagedestroy($nahled_zdroj); ?> |
||
Časová prodleva: 7 let
|
0