AI Image Analyzer: A Step-by-Step Guide to Building One in 5 Minutes
Tags: ai, google, javascript, webdev
Published: 2024-07-01 13:05:16

Do you want to know how to build an AI image analyzer? Then read this article till the end! I'm going to show you how to build AI analyzer tools really simply, so you almost don't have to have any prior knowledge. I will take you step by step, and we will use Project IDX and the Gemini API. This means you don't have to set up anything; everything we will do is on the cloud. If you're ready, then let's get started!



## Getting Started with Project IDX
The first step is pretty simple. We need to open the website idx.google.com. If you haven't registered yet, you have to register first, and then you can see the screen below.


![Getting Started with Project IDX](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bcyhi78xegp8dbx8hp4i.png)




1. Choose a Template: I will choose the Gemini API template.

2. Name Your Project: I will call it "test 2024".

3. Select Environment: I will choose "Vite", which is a JavaScript web application environment.

4. Create the Project: Press the create button.


![Getting Started with Project IDX](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/79iik64wshdevpoml1ej.png)

After a few minutes, IDX will create everything for us, and we will see our template files, which we can modify as we like.

## Modifying the Template
This is our index.html file. We can modify it the way we like, but let's first look at it. The initial template contains almost everything that we need. This template uses the Gemini 1.5 - flash model, so it's more than enough for us.


![Modifying the Template](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y3grb6vgjnbfy9r20ijw.png)



## Getting an API Key
As you can see, the application doesn't work initially because we need to get an API key first. Go the website https://aistudio.google.com/app/apikey and obtain your key there. If you want detailed instructions on how to get an API key, please watch another [video about Project IDX](https://www.youtube.com/watch?v=jLy06avTDn4&t=2s). Once you get your key, copy it and then go to the main.js file and replace the placeholder with your API key.


![Getting an API Key](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ssea8sofumtfhojfgmfj.png)


## Testing the Application
Let's check if our application is working. Press "Go" and see what Gemini returns to us. 


![Testing the Application](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ik94rahg59vnb1ejd9y0.png)

As you can see, Gemini understands what's inside the picture and suggests some recipes to bake this kind of bakery. Since this application is already on the server, you will be able to share the link or open this application in your browser. 


![Testing the Application](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/37dik7i5je35v2cfkl8c.png)


The URL is not beautiful yet; however, you will be able to see that everything is working, and you can share this link with your partners or co-workers.

## Adding Image Upload Functionality
To complete our AI image analyzer, we need to be able to add our own image. Let's make some adjustments to the template, first is index.html file:

1. Change the Application Name: I will call it "AI Image Analyzer". 

2. Delete the HTML: Delete the predefined images. Lines from 14 until 27.

```
<div class="image-picker">
 <label class="image-choice">
   <input type="radio" checked name="chosen-image" value="/baked_goods_1.jpg">
   <img src="/baked_goods_1.jpg">
 </label>
 <label class="image-choice">
   <input type="radio" name="chosen-image" value="/baked_goods_2.jpg">
   <img src="/baked_goods_2.jpg">
 </label>
 <label class="image-choice">
   <input type="radio" name="chosen-image" value="/baked_goods_3.jpg">
   <img src="/baked_goods_3.jpg">
 </label>
</div>
```

3. Add an input field for uploading images. Line 15
```
<input type="file" id="fileInput" name="file">
```

4. Change the input name prompt value to "Ask anything you want about this image".

The resulting HTML should look like the picture below.


![The resulting HTML](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hare0zzwhq4mzhgecwni.png)

## Updating the JavaScript
We need to define JavaScript code to read our file. Open the main.js file and make the following changes:

Remove the code from line 22 until 26.
```
// Load the image as a base64 string
   let imageUrl = form.elements.namedItem('chosen-image').value;
   let imageBase64 = await fetch(imageUrl)
     .then(r => r.arrayBuffer())
     .then(a => Base64.fromByteArray(new Uint8Array(a)));
```

Add a new code starting from line 22.

```
// Load the image as a base64 string
   const fileInput = document.getElementById('fileInput');
   const file = fileInput.files[0];


   const imageBase64 = await new Promise((resolve, reject) => {
     const reader = new FileReader();
     reader.readAsDataURL(file);
     reader.onload = () => {
       const base64String = reader.result.split(',')[1]; // Extract base64 part
       resolve(base64String);
     };
     reader.onerror = reject;
   });
```

Your application will look like this in the screenshot below.


![AI Image Analyzer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/258ag53d3rrwf9modl5g.png)


## Final Testing
Let's check the result. Upload an image, ask what is on the image, and press "Go". 


My image example

![Final Testing](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/76ka9vzuhl8dx83h51le.png)



The result:

![Final Testing](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rxgvpj6y4zn6mg8giatb.png)




As you can see, the Gemini API explains everything about the image. Our AI image analyzer is working! 

## Video Tutorial - How To Build AI Image Analyzer
{% embed https://youtu.be/kBNwTIoYwr8?si=x1eco-nEqgurQ13r %}
[Visit my YouTube Channel](https://www.youtube.com/@proflead/videos?sub_confirmation=1)


## Conclusion

That's it! As you can see, it's really simple to build an AI image analyzer using Project IDX and the Gemini API. You can make a bunch of different apps. This is just one example. I hope you find this article helpful and informative. Please don’t forget to share your feedback in the comments below.

Thank you, and see you in my next articles! :)