Kom ihåg mig?
Home Menu

Menu


Smartare algoritm

 
Ämnesverktyg Visningsalternativ
Oläst 2012-09-02, 11:10 #1
Danski Danski är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2005
Inlägg: 1 208
Danski Danski är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2005
Inlägg: 1 208
Kanske missförstår jag men det där verkar vara en väldigt komplicerad, tung och oexakt lösning på ett väldigt enkelt problem?

Testa nått i denna stilen:
//Värden på bild och maxvärden på skalad bild
W1 == 2100
H1 == 3000
MaxW == 250
MaxH == 250

//Dela nuvarande mått med önskade mått för att få fram skalan, använd det högsta värdet till att skala med
W1 / MaxW -> 8.4
H1 / MaxH -> 12

//Dela med 12 och vips så är dina nya mått 175x250
2100/12 -> 175
3000/12 -> 250
Danski är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-04, 07:23 #2
klein klein är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jul 2005
Inlägg: 2 225
klein klein är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jul 2005
Inlägg: 2 225
Helt rätt tänkt.. Fungera utmärkt.

Citat:
Ursprungligen postat av Danski Visa inlägg
Kanske missförstår jag men det där verkar vara en väldigt komplicerad, tung och oexakt lösning på ett väldigt enkelt problem?

Testa nått i denna stilen:
//Värden på bild och maxvärden på skalad bild
W1 == 2100
H1 == 3000
MaxW == 250
MaxH == 250

//Dela nuvarande mått med önskade mått för att få fram skalan, använd det högsta värdet till att skala med
W1 / MaxW -> 8.4
H1 / MaxH -> 12

//Dela med 12 och vips så är dina nya mått 175x250
2100/12 -> 175
3000/12 -> 250
klein är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-04, 22:40 #3
dAEks avatar
dAEk dAEk är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2006
Inlägg: 678
dAEk dAEk är inte uppkopplad
Mycket flitig postare
dAEks avatar
 
Reg.datum: Dec 2006
Inlägg: 678
Hur hanterar ni fall där ratio-beräkningarna inte blir exakta? Jag gör liknande beräkningar men en del bilder som skalas ned blir 199px när jag sätter maxdimensionerna till 200. Det beror på castningar från double till int. Vet ni några bra sätt att lösa det på förutom att göra fula if-else-kontroller och lägga till tomma pixlar?

Ni borde ha samma problematik i era varianter ovan.
dAEk är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-05, 08:49 #4
pelmereds avatar
pelmered pelmered är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2010
Inlägg: 1 342
pelmered pelmered är inte uppkopplad
Har WN som tidsfördriv
pelmereds avatar
 
Reg.datum: May 2010
Inlägg: 1 342
Citat:
Ursprungligen postat av dAEk Visa inlägg
Hur hanterar ni fall där ratio-beräkningarna inte blir exakta? Jag gör liknande beräkningar men en del bilder som skalas ned blir 199px när jag sätter maxdimensionerna till 200. Det beror på castningar från double till int. Vet ni några bra sätt att lösa det på förutom att göra fula if-else-kontroller och lägga till tomma pixlar?

Ni borde ha samma problematik i era varianter ovan.
Det beror dels på att det är en begränsning i hur många decimaler PHP kan hantera och att PHP gör om siffrorna till base 2 internt. Läs mer om det i Floating point precision-varningen här: http://www.php.net/manual/en/language.types.float.php
Den andra anledningen är att när man castar till Int kapar de väl bara bort decimalerna (dvs kör en floor(), t.ex. 5,6 => 5). För att det ska bli rätt är det bara att köra ceil() eller round() för att få hela pixlar innan du castar till Int(om du nu måste det).
pelmered är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-05, 20:49 #5
dAEks avatar
dAEk dAEk är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2006
Inlägg: 678
dAEk dAEk är inte uppkopplad
Mycket flitig postare
dAEks avatar
 
Reg.datum: Dec 2006
Inlägg: 678
Jag var nog bara trött när jag skrev det där med avrundningen och måste ha stirrat mig blind på måtten och sett att det fanns bilder som saknade 1px på bredden. I efterhand ser jag att de ju faktiskt hållt sig inom måtten som jag specade men att maxhöjden har uppnåtts före maxbredden; att det fattades 1px beror alltså inte på ett algoritmfel utan på ursprungsbildernas dimensioner. Doh!
dAEk är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:11.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017