NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: resize image a snížená kvalita

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
katrincsak
Člen
Avatar
katrincsak:31.8.2015 18:43

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:31.8.2015 18:59

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
31.8.2015 18:59
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
katrincsak
Člen
Avatar
Odpovídá na katrincsak
katrincsak:31.8.2015 20:00

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:31.8.2015 20:18

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:31.8.2015 20:52

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í
+2,50 Kč
Řešení problému
Nahoru Odpovědět
31.8.2015 20:52
obsah kocky = r^2 ... a preto vlak drnká
Avatar
katrincsak
Člen
Avatar
Odpovídá na Matúš Petrofčík
katrincsak:31.8.2015 21:04

Zkusím a pak dám vědět ;-)

 
Nahoru Odpovědět
31.8.2015 21:04
Avatar
Odpovídá na katrincsak
Matúš Petrofčík:31.8.2015 21:12

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
31.8.2015 21:12
obsah kocky = r^2 ... a preto vlak drnká
Avatar
katrincsak
Člen
Avatar
Odpovídá na Matúš Petrofčík
katrincsak:31.8.2015 21:24

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
31.8.2015 21:24
Avatar
Odpovídá na katrincsak
Matúš Petrofčík:31.8.2015 21:27

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
Odpovídá na Neaktivní uživatel
Matúš Petrofčík:31.8.2015 21:46

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
Odpovídá na Matúš Petrofčík
Matúš Petrofčík:31.8.2015 21:49

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
31.8.2015 21:49
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na Matúš Petrofčík
Neaktivní uživatel:31.8.2015 21:52

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
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Matúš Petrofčík:31.8.2015 22:08

Č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:31.8.2015 22:10

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
Odpovídá na Matúš Petrofčík
Neaktivní uživatel:31.8.2015 22:14

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
Neaktivní uživatelský účet
Avatar
katrincsak
Člen
Avatar
Odpovídá na Neaktivní uživatel
katrincsak:31.8.2015 22:35

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.