How to decode JPEG pictures for hidden information

We often see pictures online and wonder if this picture is Photoshopped; one way to determine if the image is Photoshopped or not is using gut feelings but have every search for software that decodes the JPEG and gives you the source code. How can you make sure that the photo has not been processed or modified in any software?

how to decode a picture

JPEGsnoop is a free photo authenticity detection software that can read various coded information to help you determine if the pictures have not been edited or modified by software. 

When you encounter a suspicious photo, you can use it, and it will decode the image and spit out all the information about the picture. This software not only supports standard JPG format but also supports embedded photos in PDF, AVI, MOV, and other documents.

Steps to decode an image

  • Install the software JPEG software. On the first run, you have to agree with the terms and then click the menu “File” -> “Open image” to open the picture you want to decode
  • Just drag and drop images directly into the software. It will automatically read the information on the picture. It will decode the picture and show all the info in the top frame. 

If you see the text, such as SW: [Adobe PhotoShop] or SW: [XnView], etc., it means the picture is likely to be PhotoShopped or modified in XnView. Besides, you can also see various other information, such as CAM information, camera model, location, date, etc. 

All this information is saved in the photo signature at the time when the picture is taken. All this information can be altered using any Hex editor that can be retrieved using this software.

Now the best part is that JPEGsnoop is entirely free with green free installation. You can download the JPEG decoder from its original website and support the Windows 8 system.

More Websites to decode an image.

codercrunch

Codecrunch allows you to can reconstruct an original image by taking in base64 encoded image data and converting it to binary format. You can use this tool for free to decode images.

Here is a c++ code that decodes the picture and retrieves the information.

how to decode a JPEG image using a JpegBitmapDecoder from a FileStream.

Stream imageSource ^ = gcnew FileStream ( "myPicture.jpg" , FileMode :: Open, FileAccess :: Read, FileShare :: Read); 
^ JpegBitmapDecoder ImageDecoder = gcnew JpegBitmapDecoder (imageSource, BitmapCreateOptions :: PreservePixelFormat, BitmapCacheOption :: Default);
^ BitmapSource BitmapSource = imageDecoder-> Frames [0]; 
Image mypicture = ^ gcnew Image (); 
mypicture-> Source = BitmapSource; 
mypicture-> Stretch = Stretch :: None; 
mypicture-> Margin = System :: Windows :: Thickness (20);

how to encode a BitmapSource into a JPEG image using a JpegBitmapEncoder.

int width = 256, 
int height = 256, 
int stride = width / 8; 
array pixels ^ = gcnew array (height * stride); 
BitmapPalette palette ^ = BitmapPalettes :: Halftone256; 
// Creates a new empty image with the pre-defined palette. 
BitmapSource BitmapSource image = ^ :: Create ( 
    width, height, 
    96, 96, 
   PixelFormats :: Indexed1, 
   palette, 
   pixels, 
  stride); 
System :: IO :: FileStream ^ stream = gcnew System :: IO :: FileStream ( "picture.jpg" , FileMode :: Create); 
^ JpegBitmapEncoder pictureEncoder = gcnew JpegBitmapEncoder ();
TextBlock myTextBlock ^ = gcnew System :: Windows :: Controls ::TextBlock (); 
myTextBlock-> Text = "Codec Author is:" + pictureEncoder-> CodecInfo-> Author-> ToString (); 
pictureEncoder-> FlipHorizontal = true ; 
pictureEncoder-> FlipVertical = false ; 
pictureEncoder-> QualityLevel = 50; 
pictureEncoder-> Rotation = Rotation :: Rotate90; 
pictureEncoder-> Frames-> Add (BitmapFrame :: Create (image)); 
pictureEncoder-> Save (stream);

Written by

I am a software engineer with over 10 years of experience in blogging and web development. I have expertise in both front-end and back-end development, as well as database design, web security, and SEO.

Leave a Reply

Your email address will not be published. Required fields are marked *