Gå til innhold

C#: [LØST] Estimering av filstørrelse til lagret jpg bilde


Anbefalte innlegg

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 av :Francis:
Lenke til kommentar
Videoannonse
Annonse

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 av :Francis:
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...