Avatar billede trine_h Nybegynder
07. december 2006 - 20:36 Der er 5 kommentarer

skalering af billede

Jeg har eks. følgende hits fra 3 sider
side 1: 30
side 2: 300
side 3: 1000

Hvordan skalerer jeg forholdet imellem de 3 siders hits således at det højeste tal - i dette tilfælde 1000 - bliver 100 og de andre bliver skaleret ned tilsvarende - her: 300= 30 og 30 = 3
Det højeste tal skal altid "skaleres" ned til 100 - det er vel egentlig procent regning - men har desværre glemt det kapitel i matematikken!
Avatar billede softspot Forsker
07. december 2006 - 22:26 #1
Find forholdet mellem største tal og 100 (i dette konkrete tilfælde sættes den 1000, men er noget du skal find ud af fra gang til gang):

  maxnumber = 1000

  aspect = 100/maxnumber

multiplicer de andre med aspect

  size = imgsize * aspect
Avatar billede trine_h Nybegynder
08. december 2006 - 09:45 #2
ovenstående giver jo ikke eks. 200 i bredden hver gang - på den som har fået de fleste hits (det største tal) og skalerer så heller ikke de andre derefter - sætter jeg eks. 5000 ind som største tal og laver (100/5000) * imgsize på eks. 200 giver det jo noget andet end (100/1000) * imgsize ....
Avatar billede trine_h Nybegynder
08. december 2006 - 10:45 #3
int maxWidth = 200;
        bool firstRound = true;
        double aspect = 0;
        double endResult = 0;
        foreach (PageHits pageHits in pageHitsList)
        {
            if (firstRound)
            {
                {
                    double result = (double)pageHits.Hits / maxWidth; // 5000 / 200 =  25
                    double addedTo = (double)maxWidth - result; // 200-25 = 175
                    aspect = (double)addedTo / result; // 175 / 25 = 7
                    endResult = (double)(aspect * result) + result;
                }       
                firstRound = false;
            }
            else
            {
                double result = (double)pageHits.Hits / maxWidth;
                endResult = (double)(result * aspect) + result;
            }


En mulig løsning - kan det gøres nemmere end det - denne version ser også ud til at give problemer hvis maxhits er mindre end maxWidth
Avatar billede trine_h Nybegynder
08. december 2006 - 10:53 #4
nej ingen problemer umiddelbart - kan det gøres mere effektivt??
Avatar billede softspot Forsker
08. december 2006 - 11:53 #5
Hmmm... lidt kryptisk forklaring... I spørgsmålet skriver du at det største tal altid skal skaleres ned til 100 og så starter du svaret på mit indlæg med at sige at det ikke giver 200...???

Den værdi jeg kommer frem til i aspect, skal alle billedernes størrelse ganges med - også størrelsen af det støreste billede. Aspect er forholdet mellem en bredde på 100 for det største billede og så billedets faktiske bredde. Eksempelvis:

100/5000 = 0.02

medfører:
5000 * 0.02 = 100
300 * 0.02 = 6
30 * 0.02 = 0.6

og et andet eksempel

100/2000 = 0.05
medfører:
2000 * 0.05 = 100
450 * 0.05 = 22.5
150 * 0.05 = 7.5

Du skal altså først gennemløbe din pageHitsList for at finde det billede med hæjeste bredde og så derefter gennemløbe listen igen for at sætte størrelsen ifht. det aspect du er kommet frem til i første gennemløb...

Det er muligt (endog sandsynligt) at jeg har misforstået dig, men så må vi jo tage den derfra. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester