Jump to content
php.lv forumi

PHP funkcija, kas samazina bildi


aywars

Recommended Posts

Sveiki!

 

Veidojot e-veikalu, saskāros ar problēmu, ka produktu bildes var būt ļoti dažāda izmēra, taču tās visas ir jāievieto vienāda izmēra laukumā.

 

Pieņemot, ka visas bildes ir horizontālas, diezgan labi darbojās šāda funkcija:

function resize_pic($src, $size) {
list($width,$height) = getimagesize($src); $height = floor(($height/$width) * $size);
echo '<img src="'.$src.'" width="'.$size.'"
     	height="'.$height.'" alt="" />'; }

 

Tomēr ideālā pasaulē nedzīvojam, tādēļ šī funkcija neder. Būtībā ir 3 pamatvarianti:

1) Attēla augstums un platums ir vienāds (kvadrātaina bilde);

2) Platums ir lielāks par augstumu (horizontāla bilde);

3) Platums ir mazāks par augstumu (vertikāla bilde).

 

Tomēr arī visiem šiem variantiem var būt variācijas - augstums, piemēram, var būt pavisam nedaudz lielāks nekā platums, vai daudz lielāks. Attiecīgi domāju, ka funkcija jāveido, ņemot vērā bildes malu attiecību.

 

Neesmu diez ko labs matemātiķis, tāpēc prasu jūsu palīdzību: vai kāds var palīdzēt izdomāt funkciju, kas, ņemot vērā laukuma izmērus (tas būs kvadrāts) un bildes malu attiecību, samazinās visdažādākā izmēra bildes tieši tik daudz, lai tās ietilptu noteiktā laukumā un izmēra ziņā izskatītos vienādas. Pieņemam, ka visas bildes beidzas līdz ar malām (nav apkārt pārāk lieli balti laukumi). Obligāts nosacījums ir, ka bildes nedrīkst graizīt (crop).

 

Paldies!

Link to comment
Share on other sites

Nu visam bildēm ir balts fons un es viņas lieku uz vienāda izmēra balta laukuma.

 

Ir teiksim vertikāla bilde 150x300, un ir horizontāla, piemēram, 350x250. Ir laukums 300x300. Abas bildes vajag samazināt tā, lai viņās ietilptu šajā laukumā un blakus stāvot attēlu izmēri izskatītos vienādi. Vienādi nevis tādā ziņā, ka pikseļos, bet lai objekti attēlos izskatītos pēc viena mēroga.

 

Lūk paraugs:

 

4ezs7fgl3lv2ufwwxdls.jpg

Edited by aywars
Link to comment
Share on other sites

Proporcionāli samazini , bildi līdz tā kvadrāta malas lielumam, izveido bildi ar baltu kvadrātu - ievieto samazināto bildi tājā kvadrātā -

kā to izdarīt , meklē pēc Watrmarks - ( tieši tā pat kā vedo udenszīmes, vienīgi, udenszīmes vietā, būs samazinātā bilde, bet bildes vietā tukša, balta bilde )

Link to comment
Share on other sites

Ja tev tās bildes nevajag apstrādāt... tad vajadzētu pietikt ar max-width, max-height.

Viņam vajag samazināt JEBKURU bildi uz noteiktu izmēru - teiksim kvadrātu .. kā tu ieteiktu to realizēt ar max-width, max-height??, tā lai bilde netiktu kropļota, un netiktu nogrieztas liekās malas ??

Iteiktu tomēr topiku izlasīt, un tikai tad bliezt atbild ...

Link to comment
Share on other sites

viņam vajag saglabāt objekta mērogu starp bildēm, bet vienā bildē var būt redzama tikai objekta daļa (aļa telefona pogas), vai vairāki objekta attēli, un iespējams vairākās rindās, vai arī objekta šaurākā mala pieckārtīgā palielinājumā.

 

gl with this.

Edited by v3rb0
Link to comment
Share on other sites

Sirmais vilk, kurš viņš saka, ka viņam bildes vajag kā kvadrātus? Es vienīgais ko redzu ir, ka vajag, lai dažāda izmēra bildes ietilptu viena izmēra kvadrātos.

vai kāds var palīdzēt izdomāt funkciju, kas, ņemot vērā laukuma izmērus (tas būs kvadrāts) un bildes malu attiecību, samazinās visdažādākā izmēra bildes tieši tik daudz, lai tās ietilptu noteiktā laukumā un izmēra ziņā izskatītos vienādas.
Ir teiksim vertikāla bilde 150x300, un ir horizontāla, piemēram, 350x250. Ir laukums 300x300. Abas bildes vajag samazināt tā, lai viņās ietilptu šajā laukumā

 

Ieteiktu tomēr apdomāt ko esi izlasījis topikā, pirms bliezt atbildi..

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...