Avatar billede arnebalsby Nybegynder
06. maj 2009 - 02:56 Der er 2 kommentarer og
1 løsning

Er du ekspert til bitmap/PixelFormat - hvordan laver man en meget lille gif ?

Hej.

Jeg laver min egen lille gif med denne kode:

Bitmap bitmap = new Bitmap(width,height,PixelFormat.Format1bppIndexed );
        MemoryStream ms = new MemoryStream();
        bitmap.Save(ms, ImageFormat.Gif);
        byte[] byteArray2 = ms.GetBuffer();

Men den bliver altid mindst 1024 bytes stor, jeg ved at små giffer kan være helt ned til omkring 40 bytes.

Er der nogen der har en ide til hvordan jeg kan fremstille en gif med vilkårlig størrelse, som ikke bliver helt så stor ?

(det er fordi at jeg overfører nogen information til en hjemmeside, som kommer ind som width og height på et image).

OK - rimeligt underlidt spørgsmål, så det er nok mest til image og c# eksperten.

Mvh
Avatar billede arne_v Ekspert
06. maj 2009 - 03:29 #1
Hvad er width og height ?
Avatar billede arnebalsby Nybegynder
06. maj 2009 - 03:37 #2
Nu har jeg opklaret mysteriet, det kom sig af at min første løsning med et bytearray, ikke virkede.

Men det var fordi jeg prøvede at lave giffer med widht eller height som var 0 det må man ånenbart ikke.

(height og width skal også være under et eller andet max på omkring 4000).

God fornøjelse.

private byte[] getGif(int width, int height)
    {
        byte widthBig = (byte)Math.Floor((decimal)width / 256);
        byte widthSmall = (byte)(width - widthBig*256);

        byte heightBig = (byte)Math.Floor((decimal)height / 256);
        byte heightSmall = (byte)(height - heightBig*256);
        byte[] retValue = new byte[42];
        retValue[0] = 71;
        retValue[1] = 73;
        retValue[2] = 70;
        retValue[3] = 56;
        retValue[4] = 57;
        retValue[5] = 97;
        retValue[6] = widthSmall; // width small
        retValue[7] = widthBig; // width big
        retValue[8] = heightSmall; // height small
        retValue[9] = heightBig; // height big
        retValue[10] = 128;
        retValue[11] = 0;
        retValue[12] = 0;
        retValue[13] = 0;
        retValue[14] = 0;
        retValue[15] = 0;

        retValue[16] = 255;
        retValue[17] = 255;
        retValue[18] = 255;
        retValue[19] = 33;
        retValue[20] = 249;
        retValue[21] = 4;
        retValue[22] = 1;
        retValue[23] = 0;
        retValue[24] = 0;
        retValue[25] = 0;
        retValue[26] = 0;
        retValue[27] = 44;
        retValue[28] = 0;
        retValue[29] = 0;
        retValue[30] = 0;
        retValue[31] = 0;

        retValue[32] = 1;
        retValue[33] = 0;
        retValue[34] = 1;
        retValue[35] = 0;
        retValue[36] = 64;
        retValue[37] = 2;
        retValue[38] = 1;
        retValue[39] = 68;
        retValue[40] = 0;
        retValue[41] = 59;
        return retValue;
       

    }
Avatar billede arnebalsby Nybegynder
06. maj 2009 - 03:38 #3
Jeg så først dit svar nu, width og height skulle jo så kunne være hvad som helst. Men ovenståede virker, både firefox, IE og Ghrome spiser dem alle sammen fint og uden brok.
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