:Francis: Skrevet 19. oktober 2009 Del Skrevet 19. oktober 2009 (endret) Jeg har bilder i minne som Bitmap og skal lagre dem til jpg. Jeg har et valg hvor jeg kan velge kvaliteten på bildet før det lagres, men jeg ønsker å kunne estimere størrelsen på fila før jeg lagrer den. Er det noen som vet hvordan jeg kan gjøre det? Når jeg leser bildet inn i programmet via en Stream tar jeg Stream.length.ToString() / 1024 for å finne den opprinnelige størrelsen, men når bildet skal lagres igjen må jeg ta høyde for komprimering. Mvh Francis Endret 19. oktober 2009 av :Francis: Lenke til kommentar
GeirGrusom Skrevet 19. oktober 2009 Del Skrevet 19. oktober 2009 Enkleste er vel å lagre et .JPG bilde til en memory stream og se hva størrelsen blir. Lenke til kommentar
:Francis: Skrevet 19. oktober 2009 Forfatter Del Skrevet 19. oktober 2009 (endret) Takk for svar ! Jeg testet det, men fikk helt feil resultat; private string GetImageSize(Bitmap Image) { ImageCodecInfo codec = this.getEncoderInfo("image/jpeg"); using (MemoryStream ms = new MemoryStream()) { using (EncoderParameters encParam = new EncoderParameters()) { encParam.Param[0] = new EncoderParameter(Encoder.Quality, qual); Image.Save(ms, codec, encParam); return (ms.Length / 1024).ToString(); } } } Returnerer 13kB når den egentlige størrelsen er 244kB. Hvor qual == 100 (long). Francis Endret 19. oktober 2009 av :Francis: Lenke til kommentar
:Francis: Skrevet 19. oktober 2009 Forfatter Del Skrevet 19. oktober 2009 Oi oi oi - qual verdien var ikke riktig initialisert - metoden ser faktisk ut til å fungere akkurat som den skal. Beklager så mye :blush: Francis Lenke til kommentar
Trondster Skrevet 19. oktober 2009 Del Skrevet 19. oktober 2009 Forresten - i stedet for å generere jpg mange ganger - i kontekstobjektet ditt, hvor du lagrer originalbildet, så bør du også lagre det ferdiggenererte jpg-bildet ditt. Så kan du skrive det direkte til disk hvis det har passe størrelse, i stedet for å generere ny jpg hver gang du spør på størrelsen og igjen når du skal lagre det til disk.. Forutsetter her at generering av .jpg er en tyngre oppgave enn å lagre den genererte filen i minnet - du lagrer den jo allerede i minnet som bitmap, så å lagre som jpg i tillegg burde ikke være så tungt.. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå