» Poradna » Web a internet

PHP a GD knihovna

Odpovědět  |  Zobrazit bez stromu  |  Upozornit redakci  |  nových odpovědí: 25/25
 |   |  Microsoft Windows 8 Chrome 26.0.1410.64  |  [213.226.213.---]

Zdravíčko, mám tenhle skript:function resizer($filename, $copypath, $MaxWidth, $MaxHeight) { list($OrigWidth, $OrigHeight) = getimagesize($filename); if ($MaxWidth == 0) $MaxWidth = $OrigWidth; if ($MaxHeight == 0) $MaxHeight = $OrigHeight; $pw = $OrigWidth / $MaxWidth; $ph = $OrigHeight / $MaxHeight; if ($pw > $ph) $p = $pw; else $p = $ph; if ($p < 1) $p = 1; $NewWidth = (int) $OrigWidth / $p; $NewHeight = (int) $OrigHeight / $p; $image_p = imagecreatetruecolor($NewWidth,$NewHeight); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $NewWidth, $NewHeight, $OrigWidth, $OrigHeight); imagejpeg($image_p, $copypath, 100);}Všechno funguje skvěle ovšem, když chci nahrát třeba fotku na výšku která má 3600px tak jí to otočí na šířku. S menšíma fotkama problém nemám. Nevíte kde by mohl být problém?

Odpovědi na otázku

 |   |  Microsoft Windows 7 IE 10.0  |  [82.142.82.---]

a není "problém" v té fotce? totiž že je vlastně "na šířku", ale atribut jí otáčí a říká, že je na výšku a ta gd knihovna tento atribut ignoruje - já sám se s tímto občas potýkám s fotkama z navigace, která má senzor otočení a právě podle tohoto senzoru nastavuje ten atribut rotace fotky, jinak jsou vlastně všechny fotky "na šířku"

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8 Chrome 26.0.1410.64  |  [213.226.213.---]

Obávám se, že tím to to nebude. také mě to napadlo, ale jelikož nahrávám na web original fotku, zmenšenou fotku a náhled, tak originál je tak jak má být, ale ty zmenšené fotky které se generujou z toho originálu se nepochopitelně sami otočí.. proto to musí být někde v té funkci resizer, ale nic mě nenapadá..

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 10.0  |  [82.142.82.---]

no ale to by tomu odpovídalo - originál je správně, ale resize tím kódem odstraní tu informaci o otočení a proto jsou fotky špatně

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8 Chrome 26.0.1410.64  |  [213.226.213.---]

Aha, takhle to funguje.. A nevíte jak to vyřešit?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 10.0  |  [82.142.82.---]

podívej se do toho originálního souboru, jestli má v exifu vlastnost Orientation a jakou má hodnotu - nejspíš 3, 6 nebo 8pokud to tam najdeš, pak musíš načíst tuto hodnotu, a podle ní provést otočení

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8 Chrome 26.0.1410.64  |  [213.226.213.---]

Přes exif reader jsem našel pouze Orientation: top

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 10.0  |  [82.142.82.---]

a načíst to pomocí exif funkcí php bys nemohl? aby to ukazovalo opravdu uložené hodnoty a né nějak přeložené nějakým programem

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8 Chrome 26.0.1410.64  |  [213.226.213.---]

Tak jsem to zkusil přes php, zde je výsledek:FILE.FileName: org00050.jpgFILE.FileDateTime: 1366628065FILE.FileSize: 2753678FILE.FileType: 2FILE.MimeType: image/jpegFILE.SectionsFound: ANY_TAG, IFD0, THUMBNAIL, EXIF, INTEROPCOMPUTED.html: width="3648" height="2736"COMPUTED.Height: 2736COMPUTED.Width: 3648COMPUTED.IsColor: 1COMPUTED.ByteOrderMotorola: 0COMPUTED.ApertureFNumber: f/5.6COMPUTED.Thumbnail.FileType: 2COMPUTED.Thumbnail.MimeType: image/jpegIFD0.ImageWidth: 3648IFD0.ImageLength: 2736IFD0.Compression: 1IFD0.PhotometricInterpretation: 2IFD0.Make: PanasonicIFD0.Model: DMC-FZ50IFD0.Orientation: 1IFD0.XResolution: 1207959552/16777216IFD0.YResolution: 1207959552/16777216IFD0.PlanarConfiguration: 1IFD0.ResolutionUnit: 2IFD0.Software: Ver.1.0 IFD0.DateTime: 2013:04:22 12:03:57IFD0.YCbCrPositioning: 1IFD0.Exif_IFD_Pointer: 272IFD0.UndefinedTag:0xC4A5: PrintIM0250d ¬ Ä€ ' '—'°''^'‹'Ë'ĺ'THUMBNAIL.Compression: 6THUMBNAIL.Orientation: 1THUMBNAIL.XResolution: 1207959552/16777216THUMBNAIL.YResolution: 1207959552/16777216THUMBNAIL.ResolutionUnit: 2THUMBNAIL.DateTime: 2013:04:22 12:03:57THUMBNAIL.JPEGInterchangeFormat: 7924THUMBNAIL.JPEGInterchangeFormatLength: 4893EXIF.ExposureTime: 10/2500EXIF.FNumber: 56/10EXIF.ExposureProgram: 2EXIF.ISOSpeedRatings: 100EXIF.ExifVersion: 0221EXIF.DateTimeOriginal: 2013:04:20 11:01:12EXIF.DateTimeDigitized: 2013:04:20 11:01:12EXIF.ComponentsConfiguration: EXIF.CompressedBitsPerPixel: 4/1EXIF.ExposureBiasValue: 0/100EXIF.MaxApertureValue: 30/10EXIF.MeteringMode: 5EXIF.LightSource: 0EXIF.Flash: 16EXIF.FocalLength: 74/10EXIF.FlashPixVersion: 0100EXIF.ColorSpace: 1EXIF.ExifImageWidth: 3648EXIF.ExifImageLength: 2736EXIF.SensingMethod: 2EXIF.FileSource: EXIF.SceneType: EXIF.CustomRendered: 0EXIF.ExposureMode: 0EXIF.WhiteBalance: 0EXIF.DigitalZoomRatio: 0/10EXIF.FocalLengthIn35mmFilm: 35EXIF.SceneCaptureType: 0EXIF.GainControl: 0EXIF.Contrast: 0EXIF.Saturation: 0EXIF.Sharpness: 0Ovšem když to zkusím na originální fotce jak na šířku, tak na výšku, orientace je pořád jenom 1

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 9.0  |  [81.201.48.---]

no podle tohoto by to měla být fotka na šířku bez rotace - je to tak?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8 Chrome 26.0.1410.64  |  [213.226.213.---]

Tahle zrovna jo, ale když to zkusím načíst z fotky na výšku, orientace zůstane stejně 1 :/

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 9.0  |  [81.201.48.---]

no ale fotku na výšku jsi udělal otočení foťáku o 90° a foťák nemá senzor otočení, takže proto v tom exifu je to pořád stejný

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux AppleMAC-Safari 5.0  |  [213.226.213.---]

Tomu bych rozumnel, ale proc mi to blbne pri nahravani, kdyz orientaci to ma stejnou.. to porad nechapu..

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 10.0  |  [82.142.82.---]

no ale já nevím, jak se z fotky, která je na šířku, udělala fotka "na výšku", která, ale ve svých atributech má, že je na šířku a když se uploaduje na web, tak se zmenšeniny defakto udělají správně na šířku.Není problém v tom, že v nějakém prohlížeči fotek máte nastaveno otočení této fotky při prohlížení, ale že to je pouze vlastnost daného prohlížeče fotek (že si třeba u každé fotky pamatuje náhled a otočení) a s vlastní fotkou to nemá nic společného?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8 Chrome 26.0.1410.64  |  [213.226.213.---]

Myslel jsem taky, že to může být nějaká vymoženost Chromu, ale zkoušel jsem to v ostatních a stejně se fotky otáčeli..

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 10.0  |  [82.142.82.---]

a můžeš někam dát ty fotky ke stažení - jednu, která dělá problémy a druhou, která problémy nedělá?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8 Chrome 26.0.1410.64  |  [213.226.213.---]

Tak tady jsou originální fotky v archivu: http://ferdajz.sdh-chrudim.cz/Vranov.rar

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 10.0  |  [82.142.82.---]

no je to přesně tak, jak jsem předpokládalfotka P1000133.JPG ti vytvoří náhled správně - na šířku, zatímco fotka P1000132.JPG, která je na výšku, ti zmenšeninu udělá špatně - na šířku

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8 Chrome 26.0.1410.64  |  [213.226.213.---]

Přesně, ale jak to ošetřit, když v exifu mám Orientation u obou 1. Na řešení jsem pořád nepřišel.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 9.0  |  [81.201.48.---]

no to není pravda - právě podle toho exifu jsem to poznaljinak výchozí prohlížeč fotek ve win 7 mi obě fotky ukázal na šířku, že ten exif ignoroval, ale IrFan to umí zobrazit správně:---- System ----File Name                       : P1000132.JPG---- IFD0 ----Orientation                     : Rotate 90 CW---- Panasonic ----Rotation                        : Rotate 90 CW---- IFD1 ----Orientation                     : Rotate 90 CW---------------------------------------------------------- System ----File Name                       : P1000133.JPG---- IFD0 ----Orientation                     : Horizontal (normal)---- Panasonic ----Rotation                        : Horizontal (normal)---- IFD1 ----Orientation                     : Horizontal (normal)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8 Chrome 26.0.1410.64  |  [78.128.155.---]

Ať zkouším jakejkoliv prohlížeš, všude se mi fotky zobrazujou "správně"..Jak si přišel na tenhle výpis? Ať už se kouknu na exif přes Reader nebo přes PHPko na serveru, nic z toho tam nemám :(

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 10.0  |  [82.142.82.---]

to je výpis z exiftool - http://www.sno.phy.queensu.ca/~phil/exiftool/a pomocí kódu v php: $vysl=exif_read_data('P1000132.JPG'); print_r($vysl); $vysl=exif_read_data('P1000133.JPG'); print_r($vysl);mám tento výsledek (opět ukazuje, že ten P1000132.JPG je otočený), takže někde musíš dělat chybu, když ti vychází, že všechny obrázky jsou stejný - na šířku:Array( [FileName] => P1000132.JPG [Orientation] => 6 [THUMBNAIL] => Array ( [Orientation] => 6 ))Array( [FileName] => P1000133.JPG [Orientation] => 1 [THUMBNAIL] => Array ( [Orientation] => 1 ))

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8 Chrome 26.0.1410.64  |  [78.128.148.---]

Díky moc, takhle mi to už funguje a teď když koukám na internet, tak stačí ošetřit hodnoty 3,6 a 8? :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 IE 9.0  |  [81.201.48.---]

jo, přesně tak

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 IE 10.0

Pro redakci Živě:Umožněte v poradně, alespoň změnu písma a stylu pro výpisy chyb, logů, zdrojové kódy pro lepší čitelnost

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Chrome 26.0.1410.63

Michal Kolesa furt vzkazuje...

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: 10, Knihovna, Filename



Určitě si přečtěte



Aktuální číslo časopisu Computer

26 procesorů v důkladném testu

Zhodnotili jsme 18 bezdrátových reproduktorů

Jak fungují cash back služby?

Pohlídejte své děti na internetu