O que você está perguntando, essencialmente, é se o processo de decodificação de uma imagem JPEG pode ser revertido. Esta é uma intenção muito diferente da de um codificador JPEG convencional, e não tenho conhecimento de nenhum software que faça isso. Matematicamente isso é possível * desde que a imagem não tenha uma transformação ou outra modificação aplicada depois que foi codificada, mas programaticamente quão difícil poderia ser?
O primeiro problema é o espaço de cores - o JPEG usa subamostragem (a amostra de cor sobre um grupo de pixels) yCbCr, enquanto um bitmap é RGB. Perdas inevitáveis convertendo entre esses espaços de cor (e também em qualquer ajuste de gama) introduzem ruído. O segundo problema a ser resolvido é o JPEG registra os dados da imagem como macroblocos (sub-imagens NxN), que devem ser inferidas da imagem de saída do decodificador. Uma explicação mais detalhada do formato JPEG e do processo de codificação pode ser encontrada aqui link
'un-decoding' a JPEG:
Para criar uma aproximação dos dados JPEG originais, precisamos encontrar a subamostragem, o tamanho e o alinhamento dos macroblocos e os coeficientes Discrete Cosine Transform (DCT) que foram usados para codificá-los. O resto é idêntico a um processo normal de codificação JPEG. Uma implementação ingênua que vem à mente é "adivinhar e verificar": suponha que algumas implementações comuns de JPEG foram usadas para criar a imagem e tente aplicá-las até encontrar uma que tenha resultados semelhantes ao JPEG do DCT (geralmente zeros para altas frequências).
Depois disso, ajuste os coeficientes para um erro mínimo comparado ao original (ou seja, bitmap da imagem compactada). Este processo ainda irá resultar em troca entre erro e tamanho do arquivo, mas deve chegar perto o suficiente para fins práticos.
Source : Verificação anterior de verificação de codecs de vídeo DNx e ProRes, que aplicam codificação tipo JPEG a cada quadro individual (o software que reverte os quadros decodificados teria sido um projeto paralelo muito interessante e potencialmente útil). / p>
* A set of input data exists that will produce identical output when passed through the original JPEG decoder, however it is highly improbable for any reconstruction to be a byte-wise copy (ignoring metadata) of the original file because information was lost during the decoding process.