JPEG - Joint Photografic Experts Group

Moderador: Moderador

Responder
Avatar do Utilizador
Streme
Mensagens: 1766
Registado: 06 mar 2008, 17:02
Localização: Salvador-Bahia

JPEG - Joint Photografic Experts Group

Mensagem por Streme » 08 set 2008, 10:42

JPEG - Joint Photografic Experts Group

JPEG é um padrão de compressão de imagens de alta definição. Este tipo de compressão utiliza métodos de lógica difusa para criar os dados de origem (que são os dados em que as imagens provêm e não são descartados). Pode compactar até 90% do arquivo original "sem perder" a qualidade de imagem, pois os pixels não são gerados aleatoriamente na tela, e sim com um cálculo geométrico em que as cores primárias e o RGB ficam paralelos ao eixo central do arquivo.

A sigla é de Joint Photografic Experts Group, o Grupo da Associação dos Entendidos em Fotografia. Embora o JPEG consiga realmente reduzir o tamanho de um arquivo até 18 vezes, uma parte da definição se perde no processo. Mesmo assim, é um dos formatos de compressão mais usados, porque para os leigos, a diferença não é tão claramente percebida.

Em informática, JPEG (pronuncia-se em inglês "jay-peg" e português "jota-peg") é a sigla de Joint Photographic Experts Group, tratando-se de um formato de compressão, com perda de dados, aplicado em imagens fotográficas. A perda de dados é proporcional ao fator de compressão desejado. O arquivo (ou ficheiro) que usa este método de compressão é chamado normalmente por JPEG; as extensões de arquivos para este formato são .jpeg , .jfif , .jpe e .jpg , este último, o mais comum.

Este formato de ficheiro, foi desenvolvido inicialmente por Eric Hamilton da C-Cube Microsystems que decidiu disponibilizá-lo em domínio público sob o nome de JPEG File Interchange Format (JFIF). Mas por razões alheias ao autor, generalizou-se chamar a este formato JPEG. Os algoritmos de compressão utilizados por este formato, estão definidos na norma ISO/IEC 10981-1, que define esses e outros algoritmos (também utilizados pelo TIFF) e não o formato de ficheiro.

Funcionamento
O processo de compactação JPEG é composto das seguintes fases:

A imagem é divida em blocos de 8x8 pixels e em cada um destes blocos é calculada a DCT (discrete cossine transform/Transforma Discreta de Coseno).

Os coeficientes gerados pela DCT são quantizados e alguns coeficientes até eliminados. O processo de quantização que ira definir o grau de compactação da imagem.

Na última etapa a codificação de Huffman é aplicada aos coeficientes quantizados.

Imagem

Parece que não existe diferença entre as imagens, mas essa inexistente diferença é facilmente percebida por alguem que conheçe imagens.

Definir nível de compactação JPEG

Convém modificar os parâmetros de uma imagem quando você salva a imagem No Disco para minimizar a tamanho do arquivo ou melhorar sua qualidade. Você pode ajustar a qualidade de uma imagem JPEG, modificando o nível de compactação. Para especificar a compactação Nível quando você Salvar uma imagem JPEG, você deve criar um objeto EncoderParameters e transmiti-las a método de classe de Image Save. Inicializar o objeto EncoderParameters de modo que ele tenha uma matriz que consiste um EncoderParameter. Quando você Criar o EncoderParameter, especificar o codificador Quality e o nível de compactação desejada.

Exemplo
O exemplo de código a seguir cria um objeto EncoderParameter e salva Três imagens JPEG. Cada imagem JPEG é salvo com um nível de qualidade diferentes, modificando o valor passado para o construtor EncoderParameter long. Um nível de qualidade de 0 corresponde à compactação maior, e um nível de qualidade de 100 corresponde ao menos a compactação.

Visual Basic Codigo:

[color=blue]Private Sub VaryQualityLevel()
' Get a bitmap.
Dim bmp1 As New Bitmap("c:\TestPhoto.jpg")
Dim jgpEncoder As ImageCodecInfo = GetEncoder(ImageFormat.Jpeg)

' Create an Encoder object based on the GUID
' for the Quality parameter category.

Dim myEncoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.Quality

' Create an EncoderParameters object.
' An EncoderParameters object has an array of EncoderParameter
' objects. In this case, there is only one
' EncoderParameter object in the array.

Dim myEncoderParameters As New EncoderParameters(1)

Dim myEncoderParameter As New EncoderParameter(myEncoder, 50&)
myEncoderParameters.Param(0) = myEncoderParameter
bmp1.Save("c:\TestPhotoQualityFifty.jpg", jgpEncoder, myEncoderParameters)

myEncoderParameter = New EncoderParameter(myEncoder, 100&)
myEncoderParameters.Param(0) = myEncoderParameter
bmp1.Save("c:\TestPhotoQualityHundred.jpg", jgpEncoder, myEncoderParameters)

' Save the bitmap as a JPG file with zero quality level compression.
myEncoderParameter = New EncoderParameter(myEncoder, 0&)
myEncoderParameters.Param(0) = myEncoderParameter
bmp1.Save("c:\TestPhotoQualityZero.jpg", jgpEncoder, myEncoderParameters)

End Sub 'VaryQualityLevel



...


Private Function GetEncoder(ByVal format As ImageFormat) As ImageCodecInfo

Dim codecs As ImageCodecInfo() = ImageCodecInfo.GetImageDecoders()

Dim codec As ImageCodecInfo
For Each codec In codecs
If codec.FormatID = format.Guid Then
Return codec
End If

Next codec
Return Nothing

End Function




C#

private void VaryQualityLevel()
{
// Get a bitmap.
Bitmap bmp1 = new Bitmap(@"c:\TestPhoto.jpg");
ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);

// Create an Encoder object based on the GUID
// for the Quality parameter category.

System.Drawing.Imaging.Encoder myEncoder =
System.Drawing.Imaging.Encoder.Quality;

// Create an EncoderParameters object.
// An EncoderParameters object has an array of EncoderParameter
// objects. In this case, there is only one
// EncoderParameter object in the array.

EncoderParameters myEncoderParameters = new EncoderParameters(1);

EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 50L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityFifty.jpg", jgpEncoder, myEncoderParameters);

myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityHundred.jpg", jgpEncoder, myEncoderParameters);

// Save the bitmap as a JPG file with zero quality level compression.
myEncoderParameter = new EncoderParameter(myEncoder, 0L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityZero.jpg", jgpEncoder, myEncoderParameters);

}


...


private ImageCodecInfo GetEncoder(ImageFormat format)
{

ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}


Compilar o código
[O]-Este exemplo requer:
Um aplicativo Windows Forms.
Um PaintEventArgs, que é um parâmetro de PaintEventHandler.
Um arquivo de imagem que é denominado TestPhoto.jpg e localizado em c:\.


JPEG File Interchange Format (JFIF)/(JPEG)
Tipo imagem raster (bitmap)
MIME image/jpeg
image/jfif
Extensão .jpeg ; .jpe ; .jpg ; .jfif ; .jfi
Compressão JPEG
Espaço de cor 8 e 24
Características JPEG progressivo (interlacing)
Desenvolvedor Eric Hamilton (C-Cube Microsystems), e actualmente a Joint Photographic Experts Group.
Lançamento 1983
Última versão 6b (27 de Março de 1998)
Programas vários (maioria dos editores de imagem)
Variantes .jtif ; .jp2 ; .jpx ; .jng
Website http://www.jpeg.org




Imagem
Adicionais: Streme - Danilo Dose
Fonte: várias
Última edição por Streme em 08 set 2008, 11:27, editado 1 vez no total.
O0oº* Streme*ºo0O

O seu obrigado é a melhor maneira de retribuição.

Responder

Voltar para “Design”