Diskuze: resize image a snížená kvalita

PHP PHP resize image a snížená kvalita American English version English version

Avatar
katrincsak
Člen
Avatar
katrincsak:

Zdravím,

při nahrávaní fotek dochází ke zmenšení fotek, ale rád bych zachoval kvalitu nebo případně ji mohl ovlivnit. Fotka se zmenší vše funguje jak má, ale kvalita je znatelně horší. Není strašná, ale je to znatelné.

Používám funkce:
(Myslím, že ti co mají zkušenosti tak nepotřebují celý kod, který se spíše už stará jen o zpracování)

imagecreatetruecolor()
imagecopyresized()

šířku nastavuji fixně na 640 .. Což je defakto jediné co ovlivňuji.

Potřebuji vědět jestli je problém v používaných funkcí, nebo jestli musím použít ještě něco, nebo jestli teda spíše je problém ještě někde před tím, tedy ve zpracování.

Přiznávám se, že práci s obrázky v PHP jsem nijak neštudoval.

Děkuji za rady ;-)

Editováno 31.8.2015 18:45
 
Odpovědět 31.8.2015 18:43
Avatar
Richard
Člen
Avatar
Odpovídá na katrincsak
Richard:

Zhoršení kvality tam bude vždy, ale když použiješ imagecopyresampled tak dostaneš mnohem lepší výsledek.
Více v dokumentaci http://php.net/…esampled.php

Nahoru Odpovědět  +3 31.8.2015 18:59
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
katrincsak
Člen
Avatar
Odpovídá na katrincsak
katrincsak:

Je pravda, že jak se dívám tak je to důvod 256 barev do kterých to převede (jak se dívám)...

Jak tedy co nejlépe řešit velikost obrázků? Nebo spíše jak to řešíte vy?

Uživatel nahraje fotku ->
pak se má zobrazit v seznamu inzercí a následně v samotném inzerátu jako náhled ->
nebo jako i miniatura ->
při kliknutí se zobrazí maximální velikost (používám js script na prohlížení).

Napadají mě 2 varianty...

  1. Buď konvertovat velikost a počítat se sníženou kvalitou.
  2. Nebo jen hlídat velikost souboru/obrázku a nechat maximální rozlišení obrázku

hosting mám na wedosu dle informací které mají i ve VP tak fotky které slouží k prezentaci webu, nebo funkci tak jsou povolené tedy i fotky k inzerci, ale i tak bude zřejmě dobré si hlídat kapacitu.

Editováno 31.8.2015 20:01
 
Nahoru Odpovědět 31.8.2015 20:00
Avatar
katrincsak
Člen
Avatar
Odpovídá na Richard
katrincsak:

Dal jsem nechtěně že odpovídám sobě.. achjo ... Bych se to už mohl naučit ... Když už nezapomenu, tak to dám zle..

Editováno 31.8.2015 20:19
 
Nahoru Odpovědět 31.8.2015 20:18
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Matúš Petrofčík:

kukni sem, som ti tu dal kus mojho (stareho) kodu ktorý som orezal o tebe nepotrebné časti... vytvorí ti z jednoho uploadnutého súboru 2 súbory, 80% original a 70% thumbnail (asi 600x600 px štvorec) http://www.itnetwork.cz/dev-lighter/629 ... a tam je namiesto resize použité resample, ako radí Richard

PS: v jednej z podmienok kontorlujem typ súboru na image/jpeg... tak sa to nesmie robiť, to je chyba ;)

Editováno 31.8.2015 20:53
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 31.8.2015 20:52
obsah kocky = r^2 ... a preto vlak drnká
Avatar
katrincsak
Člen
Avatar
 
Nahoru Odpovědět 31.8.2015 21:04
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na katrincsak
Matúš Petrofčík:

OK, plus máš za domácu úlohu zistiť, akým spôsobom zaručene zistíme či súbor je typu image/jpeg, image/gif, alebo image/png :) tak napíš.

Nahoru Odpovědět  +1 31.8.2015 21:12
obsah kocky = r^2 ... a preto vlak drnká
Avatar
katrincsak
Člen
Avatar
Odpovídá na Matúš Petrofčík
katrincsak:

To vím :P

$pripona = strtolower(pathinfo($soubor_nazev, PATHINFO_EXTENSION));

je to včetně zmenšení písmenek.

Pak už to budu ifovat ;-)

Editováno 31.8.2015 21:25
 
Nahoru Odpovědět  -2 31.8.2015 21:24
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na katrincsak
Matúš Petrofčík:

neee... verím že toto sa dá jednoducho oklamať, podobne ako v poli $_FILES položka type :)

skús ešte ;)

edit: si predstav že mám obrázok image.asdf ... a aj napriek domu viem na 100% že to je mime typu image/jpeg :P to dáš :)

Editováno 31.8.2015 21:30
Nahoru Odpovědět 31.8.2015 21:27
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Samuel Illo
Redaktor
Avatar
Nahoru Odpovědět 31.8.2015 21:35
www.samuelillo.com; lamka02sk(zavináč)samuelillo.com, www.point.samuelillo.com, www.csgorig.eu
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Samuel Illo
Matúš Petrofčík:

Chcel som ho nechať, nech na to príde sám, ale nevadí, tak trochu som to čakal :D

exif_imagetype(); je veľmi dobrá voľba, dokonca vraj omnoho rýchlejšia než getimagesize();

Každopádne si myslím že getimagesize je lepšie, pretože dostaneš naraz aj hodnoty ako výška a šírka obrázku :P

EDIT: aktuálne neviem prečo, ale exif_imagetype() mi vrátilo len integer, 2 :D :D :D ja radšej getimagesize(), ale nevnucujem :P

Editováno 31.8.2015 21:48
Nahoru Odpovědět 31.8.2015 21:46
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Matúš Petrofčík
Matúš Petrofčík:

A jo tam je tabulka, som zabudol :D

1       IMAGETYPE_GIF
2       IMAGETYPE_JPEG
3       IMAGETYPE_PNG
4       IMAGETYPE_SWF
5       IMAGETYPE_PSD
6       IMAGETYPE_BMP
7       IMAGETYPE_TIFF_II (intel byte order)
8       IMAGETYPE_TIFF_MM (motorola byte order)
9       IMAGETYPE_JPC
10      IMAGETYPE_JP2
11      IMAGETYPE_JPX
12      IMAGETYPE_JB2
13      IMAGETYPE_SWC
14      IMAGETYPE_IFF
15      IMAGETYPE_WBMP
16      IMAGETYPE_XBM
17      IMAGETYPE_ICO
Nahoru Odpovědět  +1 31.8.2015 21:49
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Samuel Illo
Redaktor
Avatar
Odpovídá na Matúš Petrofčík
Samuel Illo :

Viem, že si ho chcel nechať, ale keď si problém zadáš do Googlu, je to hneď prvý výsledok....čiže zrejme nevie vyhľadávať - o to to má ťažšie.

getimagesize je lepšie v prípade, že potrebuješ aj iné hodnoty ako si písal, ale zase keď potrebuješ len formát, je asi rýchlejšie exif, či?

Nahoru Odpovědět 31.8.2015 21:52
www.samuelillo.com; lamka02sk(zavináč)samuelillo.com, www.point.samuelillo.com, www.csgorig.eu
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Samuel Illo
Matúš Petrofčík:

Čo je zlé na tom že by googlil? aspoň by niečo robil a nakoniec by na to prišiel sám (ak ho to fakt zaujíma)... či mi chceš tvrdiť že ty si na to prišiel sám bez googlenia len tak niekedy počas spánku? :D

Nahoru Odpovědět 31.8.2015 22:08
obsah kocky = r^2 ... a preto vlak drnká
Avatar
katrincsak
Člen
Avatar
Odpovídá na Matúš Petrofčík
katrincsak:

Tohle mi na konec bohatě stačí, perfektní, děkuji ;-)

mám se ještě toho hodně co učit, včetně toho typu.

Rozhodně za vše moc děkuji, asi bych k tomu časem došel ale je toho tolik že některé věci nepokládám zatím tak extra za důležité, abych tím ztrácel čas pro to co potřebuji. Tím neříkám, že je to ztráta času, ale že čas potřebuji věnovat jiným věcem na kterých pracuji. Pomalu a jistě se dále posouvám a myslím že docela i dobře.

Měl bych ještě jednu bonusovou otázku, nebo spíše názor/radu:

Aktuálně nahraji inzerát, doptám se na id inzerátu a z id vytvořím složku do které nahraji fotky. Samozřejmě přemýšlím nad budoucí údržbou a přetečením dat ke kterým jednou dojde..

Pak si říkám, že ukládat název složky jako id inzerátu je asi blbost a spíše by bylo dobré vytvářet např. hash kod s názvem složky a inzerát by měl v db uložený ten hash. Pakliže by došlo k přetečení dat, tak stačí jen přešíslovat aktuální inzeráty a stále vím co k čemu patří bez zbytečných složitostí.

Edit: K tomu přetečení samozřejmě dojít nesmí :)

Editováno 31.8.2015 22:12
 
Nahoru Odpovědět 31.8.2015 22:10
Avatar
Samuel Illo
Redaktor
Avatar
Odpovídá na Matúš Petrofčík
Samuel Illo :

Nie, ja som napísal, že ak vyhľadával a nič nenašiel nevie správne vyhľadávať a mal by zapracovať, lebo sa mu bude ťažko niečo hľadať, keď bude potrebovať.
Nikdy by som nepovedal, že používať Google je zlé...sám ho používam :)

Nahoru Odpovědět 31.8.2015 22:14
www.samuelillo.com; lamka02sk(zavináč)samuelillo.com, www.point.samuelillo.com, www.csgorig.eu
Avatar
katrincsak
Člen
Avatar
Odpovídá na Samuel Illo
katrincsak:

Popravdě řečeno než jsem tohle posílal, jsem se jen podíval na podobné funkce do dokumentace a dle popisu mi nic neříkali co by upravili velikost. Takže jsem to pak hodil sem, protože jsem zrovna nad tímhle nechtěl strávit hodiny času jako nad některými věcmi. Je spousta věcí ve kterých si sám najdu logiku, ale když neznám funkci je to těžší .

 
Nahoru Odpovědět 31.8.2015 22:35
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.