Onko PHP:lla mitään mahdollisuuksia rajata kuvaa tietyn kokoiseksi, esim 436 x 493 pikselin kokoiseksi? Olen rakentamassa kuvagalleriaa, johon tulee kuvien päivitystoiminto. Galleriassa kaikki kuvat ovat edellä mainitun kokoisia.
Tiedän kyllä, miten kuva pienennetään PHP:lla niin, että leveyden ja korkeuden suhde säilyy, mutta onko tuo rajaus mahdollista ilman, että kuva venyy mitenkään? En ainakaan äkkiseltään löytänyt mitään ohjeita Googlettamalla tai täältä foorumilta hakemalla.
Tänään on onnenpäiväs; mulla on tollanen valmiina: http://blaze.dyndns.ws/crop/
Ja tässä on pikku esimerkki, joka valitsee osan kuvasta uudeksi kuvaksi.
<?php $kuva = imagecreatefrompng("kuva.png"); $uusi = imagecreate(50, 50); imagecopy($uusi, $kuva, 0, 0, 25, 25, 50, 50); imagepng($uusi, "uusi.png"); ?>
Yllä oleva koodi erottaa kuvasta kuva.png alueen, joka alkaa kohdasta (25, 25) ja jonka koko on (50, 50). Toisin sanoen kyseessä on neliö, jonka etäisyys vasemmasta ja yläreunasta on 25 pikseliä ja sivunpituus on 50 pikseliä. Lopuksi erotettu alue tallennetaan tiedostoon uusi.png.
Kiitos avusta! Täytyypä alkaa testata koodia käytäntöön.
Pienennä tuota "croppaus-aluetta" aluksi vaikkapa leveyden suhteen. Jos tämän jälkeen samassa suhteessa pienennetty korkeus ylittää alkuperäisen kuvan korkeuden, niin pienennät leveyden sitten korkeuden suhteen. Lopuksi otat kuvan keskeltä alueen.
Alkuperäinen kuva:
http://www.terolepisto.net/images/stories/
Lopputulos on hyvinkin tämänkaltainen:
http://www.terolepisto.net/mambots/content/
Sama systeemi toimii siis täysin yhdellä tavalla sekä vaaka- että pystykuviin.
thumb:
http://www.terolepisto.net/mambots/content/
vaakakuva:
http://www.terolepisto.net/images/stories/
editedit:
Jos haluaa vielä kuvata thumbissa hieman lähempää, niin kertoo cropattavan alueen korkeuden ja leveyden ykköstä pienemmällä luvulla, niin saa thumbista hieman "lähikuvaa" muistuttavan otoksen, jolloin thumbissa ei ole aina kuvattu kuvaa "reunasta reunaan".
Aihe on jo aika vanha, joten et voi enää vastata siihen.