---
title: "JPEG Komprimering, EncoderParameters"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/71952-jpeg-komprimering-encoderparameters"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "erka"
published: "2003-03-23T17:41:44.000Z"
updated: "2003-03-29T08:49:13.000Z"
replies: 3
views: 556
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/71952-jpeg-komprimering-encoderparameters"
---

# JPEG Komprimering, EncoderParameters

## #1 — erka, 2003-03-23T17:41Z

Hej!

Sitter å pillar med ett thumbnailsystem och har stött på något som jag inte vet hur jag ska lösa. Jag gör en thumbnail och komprimerar denna JPEG bild, men om jag har 100% kvalitet så blir ändå bilden rätt dålig i jämförelse med om jag förminskar storleken i tex photoshop.

Jag undrar om jag skrivit något fel i min kod som kanske gör att den inte fungerar så bra, eller så går det helt enkelt inte att få bättre kvalitet.

```
Dim JPEGQuality As Long = 100
	Dim EncParams As EncoderParameters = New EncoderParameters(1) 
	Dim EncParameter As EncoderParameter = New EncoderParameter(System.drawing.imaging.Encoder.Quality,JPEGQuality) 
	EncParams.Param(0) = EncParameter 
	Dim objImageCodecInfo() As ImageCodecInfo = ImageCodecInfo.GetImageEncoders 

sedan sparar jag bilden med

NewImage.Save(NewFilePath,objImageCodecInfo(1), EncParams)
```

Sätter jag JPEGQuality  till 20 så blir bilden helt  värdelös så det fungerar ju hyffsat iaf. Men om den sätts till 100 så blir det som sagt inte vidare bra.

tacksam

Permalänk: https://www.webforum.nu/p/71952

## #2 — xrobx, 2003-03-24T13:30Z

Jag har gjort en thumbnail-konverterare (JPG) utan kvalitetsförlust på följande sätt:

\------------------------------------------------------------------------------------------------------------
        Dim TIA As System.Drawing.Image.GetThumbnailImageAbort
        Dim imgFormat As Imaging.ImageFormat
        Dim mImage As System.Drawing.Image
    
            imgFormat = Imaging.ImageFormat.Jpeg

            mImage = mImage.FromFile(Server.MapPath("minbild.jpg") )
            Dim btm As New Bitmap(mImage)
            mImage.Dispose()
            mImage = btm
            mImage = mImage.GetThumbnailImage(100, 100, TIA, IntPtr.Zero)
            mImage.Save(Server.MapPath("minbild_tbn.jpg") , imgFormat)
\------------------------------------------------------------------------------------------------------------

Hoppas det kan vara till hjälp...

Permalänk: https://www.webforum.nu/p/989753

## #3 — erka, 2003-03-24T13:37Z

Tack ska kolla på det lite mer, vad exakt gör "IntPtr.Zero"

Permalänk: https://www.webforum.nu/p/989761

## #4 — Lasse0, 2003-03-29T08:49Z

Ett exempel på JPEG-komprimering

Hej
Jag håller själv på med en del test av denna funktion.

Nedanstående kan användas med följande exempel:

```
Imports System.Drawing
Imports System.Drawing.Imaging
/.../
Dim i As System.Drawing.Image = _
System.Drawing.Image.FromFile(Server.MapPath("images\some.tif"))
SaveJPGWithCompressionSetting(i, Server.MapPath("images\some.jpg"), 90)
```

Komprimering 1 - 100 där 100 är högsta kvalitet (lägst komprimering)

Följande exempel är saxat från MS KB:

Setting the JPEG Quality Factor.
The JPEG encoder in System.Drawing gives an encoder parameter for setting the JPEG quality factor when you save a JPEG file. This encoder parameter complies with the convention of using an integer with a range of 1 to 100. 
The value of this encoder parameter influences the creation and use of quantization tables related to the suggested quality factor. 

The following code sample shows how this encoder parameter is used to save a JPEG file with a specified quality factor: 

```
Private Function GetEncoderInfo(ByVal mimeType As String) As ImageCodecInfo
        Dim j As Integer
        Dim encoders As ImageCodecInfo()
        encoders = ImageCodecInfo.GetImageEncoders()
        For j = 0 To encoders.Length
            If encoders(j).MimeType = mimeType Then
                Return encoders(j)
            End If
        Next j
        Return Nothing
End Function

Private Sub SaveJPGWithCompressionSetting(ByVal image As Image, ByVal szFileName As String, ByVal lCompression As Long)
        Dim eps As EncoderParameters = New EncoderParameters(1)
        eps.Param(0) = New EncoderParameter(Encoder.Quality, lCompression)
        Dim ici As ImageCodecInfo = GetEncoderInfo("image/jpeg")
        image.Save(szFileName, ici, eps)
End Sub
```

				
Retrieve the Quality Factor from a JPEG File The quality factor is not stored directly in the JPEG file,  so you cannot read the quality factor from the file.  
However, you can read the quantization tables from the JPEG file 
by using the PropertyItems property on the Image class. But even with the quantization tables, you cannot always determine a quality factor. 

You might be able to determine the quality factor by comparing the quantization tables against the "standard" IJG-generated tables. 
However, because some applications may use custom tables, you will not always find a match. For more information about the quantization tables, see the "References" section.

Permalänk: https://www.webforum.nu/p/993379

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/71952-jpeg-komprimering-encoderparameters
