<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: himanshi Gupta</title>
    <description>The latest articles on Forem by himanshi Gupta (@himanshi58158).</description>
    <link>https://forem.com/himanshi58158</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1217978%2F40bfc3aa-36b4-4d2f-b442-bb4a78bcd5ae.jpg</url>
      <title>Forem: himanshi Gupta</title>
      <link>https://forem.com/himanshi58158</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/himanshi58158"/>
    <language>en</language>
    <item>
      <title>Binary Image Processor</title>
      <dc:creator>himanshi Gupta</dc:creator>
      <pubDate>Tue, 03 Sep 2024 06:27:58 +0000</pubDate>
      <link>https://forem.com/himanshi58158/binary-image-processor-1m7l</link>
      <guid>https://forem.com/himanshi58158/binary-image-processor-1m7l</guid>
      <description>&lt;p&gt;let's create a &lt;/p&gt;

&lt;h2&gt;
  
  
  Binary Image Processor.
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Project Overview&lt;/strong&gt;:&lt;br&gt;
Create a web application that allows users to upload an image, manipulate the binary data of the image, and then save the modified image. The app will enable users to apply various effects like grayscale, inversion, and brightness adjustment by directly modifying the image’s binary data.&lt;br&gt;
&lt;strong&gt;key features:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;file upload&lt;/li&gt;
&lt;li&gt;binary manipulation&lt;/li&gt;
&lt;li&gt;image preview&lt;/li&gt;
&lt;li&gt;download image option&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;we'll be using HTML,CSS, AND JAVASCRIPT&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;html:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;`&amp;gt; &lt;/p&gt;
&lt;h1&gt;Binary Image Processor&lt;/h1&gt;

&lt;blockquote&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;input type="file" name="" id="fileinput" accept="image/*"&amp;gt;
&amp;lt;br&amp;gt;
&amp;lt;button id="grayscalebtn"&amp;gt;Apply GrayScale&amp;lt;/button&amp;gt;
&amp;lt;button id="invertbtn"&amp;gt;Apply Inversion&amp;lt;/button&amp;gt;
&amp;lt;button id="brightnessbtn"&amp;gt;Apply Brightness&amp;lt;/button&amp;gt;
&amp;lt;input type="range" name="" id="brightnessrange" min="-100" max="100" value="0"&amp;gt;
&amp;lt;br&amp;gt;
&amp;lt;canvas id="canvas"&amp;gt;&amp;lt;/canvas&amp;gt;
&amp;lt;br&amp;gt;
&amp;lt;button id="downloadbtn"&amp;gt;Download Image&amp;lt;/button&amp;gt;`
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;## css:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;*{&lt;br&gt;
            background-color: rgb(160, 226, 204);&lt;br&gt;
        }&lt;br&gt;
           body {&lt;br&gt;
            font-family: Arial, sans-serif;&lt;br&gt;
            text-align: center;&lt;br&gt;
            padding: 20px;&lt;br&gt;
        }&lt;br&gt;
        #canvas {&lt;br&gt;
            border: 1px solid #000;&lt;br&gt;
            margin-top: 20px;&lt;br&gt;
        }&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  javascript:
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;p&gt;`document.getElementById('grayscalebtn').addEventListener('click', applyGrayscale);&lt;br&gt;
        document.getElementById('invertbtn').addEventListener('click', applyInversion);&lt;/p&gt;

&lt;p&gt;const brightnessRange = document.getElementById('brightnessbtn');&lt;br&gt;
brightnessRange.addEventListener('input', () =&amp;gt; {&lt;br&gt;
    ctx.putImageData(originalImageData, 0, 0); // Reset to original before applying brightness&lt;br&gt;
    adjustBrightness(Number(brightnessRange.value));&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;document.getElementById('downloadbtn').addEventListener('click', () =&amp;gt; {&lt;br&gt;
    const link = document.createElement('a');&lt;br&gt;
    link.download = 'modified-image.png';&lt;br&gt;
    link.href = canvas.toDataURL();&lt;br&gt;
    link.click();&lt;br&gt;
});&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    const fileinput = document.getElementById('fileinput');
    const canvas =  document.getElementById('canvas');
    const ctx = canvas.getContext('2d');
    let originalImageData;
    fileinput.addEventListener('change',(event)=&amp;gt;{
        const file = event.target.files[0];
        const reader = new FileReader();

        reader.onload = function(e){
            const img = new Image();
            img.onload = function(){
                canvas.width = img.width;
                canvas.height = img.height;
                ctx.drawImage(img,0,0);
                originalImageData = ctx.getImageData(0,0,canvas.width,canvas.height);

            }
            img.src = e.target.result;
        }
        reader.readAsDataURL(file);
    })
    function applyGrayscale() {
let imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
let data = imageData.data;

for (let i = 0; i &amp;lt; data.length; i += 4) {
    const r = data[i];
    const g = data[i + 1];
    const b = data[i + 2];
    const grayscale = r * 0.3 + g * 0.59 + b * 0.11;
    data[i] = data[i + 1] = data[i + 2] = grayscale;
}

ctx.putImageData(imageData, 0, 0);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
function applyInversion() {&lt;br&gt;
    let imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);&lt;br&gt;
    let data = imageData.data;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (let i = 0; i &amp;lt; data.length; i += 4) {
    data[i] = 255 - data[i];       // Red
    data[i + 1] = 255 - data[i + 1]; // Green
    data[i + 2] = 255 - data[i + 2]; // Blue
}

ctx.putImageData(imageData, 0, 0);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
function adjustBrightness(value) {&lt;br&gt;
    let imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);&lt;br&gt;
    let data = imageData.data;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (let i = 0; i &amp;lt; data.length; i += 4) {
    data[i] += value;       // Red
    data[i + 1] += value;   // Green
    data[i + 2] += value;   // Blue
}

ctx.putImageData(imageData, 0, 0);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
`&lt;/p&gt;

&lt;p&gt;The output for this is shown below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka725a8tqhmt2im7m7xo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka725a8tqhmt2im7m7xo.png" alt="Image description" width="800" height="555"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>image</category>
      <category>html</category>
      <category>css</category>
    </item>
    <item>
      <title>Image Gallery with Full-Screen Viewer</title>
      <dc:creator>himanshi Gupta</dc:creator>
      <pubDate>Mon, 02 Sep 2024 09:13:11 +0000</pubDate>
      <link>https://forem.com/himanshi58158/image-gallery-with-full-screen-viewer-d7b</link>
      <guid>https://forem.com/himanshi58158/image-gallery-with-full-screen-viewer-d7b</guid>
      <description>&lt;p&gt;let's create an image gallery with full-screen viewer.&lt;br&gt;
for this topics you need to cover are:&lt;br&gt;
javascript basics&lt;br&gt;
javascript dom manipulation&lt;br&gt;
javascript window.open() and window.close() methods&lt;/p&gt;

&lt;p&gt;We'll be having a image gallery, having thumbnail images.&lt;br&gt;
and each thumbnail image will be having a 'view full screen' button'&lt;/p&gt;

&lt;p&gt;when the user will click on button a new screen will open showing the image on full screen.&lt;/p&gt;

&lt;p&gt;the user can close the full-screen and return to the gallery.&lt;/p&gt;

&lt;p&gt;below given is the implementation:&lt;/p&gt;

&lt;p&gt;`&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;index.html:&lt;br&gt;
`&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;`&lt;/p&gt;
&lt;br&gt;
    &lt;br&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iDPx14vv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://tse2.mm.bing.net/th%3Fid%3DOIP.iAhcp6m_91O-ClK79h8EQQHaFj%26pid%3DApi%26P%3D0%26h%3D180" alt="" width="240" height="180"&gt;&lt;br&gt;
      viewFullScreen&lt;br&gt;
    
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class="image-item"&amp;gt;
  &amp;lt;img src="https://tse1.mm.bing.net/th?id=OIP.VyeGOidyaY2qOUtlJD55BgHaFE&amp;amp;pid=Api&amp;amp;P=0&amp;amp;h=180" alt=""&amp;gt;
  &amp;lt;button onclick="viewFullScreen('https://tse1.mm.bing.net/th?id=OIP.VyeGOidyaY2qOUtlJD55BgHaFE&amp;amp;pid=Api&amp;amp;P=0&amp;amp;h=180')"&amp;gt;viewFullScreen&amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class="image-item"&amp;gt;
  &amp;lt;img src="https://tse2.mm.bing.net/th?id=OIP._s4_i4HP9aomqEkBlQK8IgHaJQ&amp;amp;pid=Api&amp;amp;P=0&amp;amp;h=180" alt=""&amp;gt;
  &amp;lt;button onclick="viewFullScreen('https://tse2.mm.bing.net/th?id=OIP._s4_i4HP9aomqEkBlQK8IgHaJQ&amp;amp;pid=Api&amp;amp;P=0&amp;amp;h=180')"&amp;gt;viewFullScreen&amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class="image-item"&amp;gt;
  &amp;lt;img src="https://tse4.mm.bing.net/th?id=OIP.awCvJ1gReYh4tWseENeY8AHaE_&amp;amp;pid=Api&amp;amp;P=0&amp;amp;h=180" alt=""&amp;gt;
  &amp;lt;button onclick="viewFullScreen('https://tse4.mm.bing.net/th?id=OIP.awCvJ1gReYh4tWseENeY8AHaE_&amp;amp;pid=Api&amp;amp;P=0&amp;amp;h=180')"&amp;gt;viewFullScreens&amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;br&gt;
`

&lt;blockquote&gt;
&lt;p&gt;sript.js&lt;/p&gt;


&lt;/blockquote&gt;

&lt;p&gt;function viewFullScreen(imageSrc) {&lt;br&gt;
    const imageWindow = window.open("", "_blank", "width=800,height=600");&lt;br&gt;
    imageWindow.document.write(&lt;code&gt;&lt;br&gt;
        &amp;lt;html&amp;gt;&lt;br&gt;
        &amp;lt;head&amp;gt;&lt;br&gt;
            &amp;lt;title&amp;gt;Full-Screen Image&amp;lt;/title&amp;gt;&lt;br&gt;
            &amp;lt;style&amp;gt;&lt;br&gt;
                body, html {&lt;br&gt;
                    margin: 0;&lt;br&gt;
                    height: 100%;&lt;br&gt;
                    display: flex;&lt;br&gt;
                    justify-content: center;&lt;br&gt;
                    align-items: center;&lt;br&gt;
                    background-color: #000;&lt;br&gt;
                }&lt;br&gt;
                img {&lt;br&gt;
                    max-width: 100%;&lt;br&gt;
                    max-height: 100%;&lt;br&gt;
                }&lt;br&gt;
                button {&lt;br&gt;
                    position: absolute;&lt;br&gt;
                    top: 20px;&lt;br&gt;
                    right: 20px;&lt;br&gt;
                    padding: 10px;&lt;br&gt;
                    background-color: #fff;&lt;br&gt;
                    border: none;&lt;br&gt;
                    cursor: pointer;&lt;br&gt;
                }&lt;br&gt;
            &amp;lt;/style&amp;gt;&lt;br&gt;
        &amp;lt;/head&amp;gt;&lt;br&gt;
        &amp;lt;body&amp;gt;&lt;br&gt;
            &amp;lt;img src="${imageSrc}" alt="Full-Screen Image"&amp;gt;&lt;br&gt;
            &amp;lt;button onclick="window.close()"&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br&gt;
        &amp;lt;/body&amp;gt;&lt;br&gt;
        &amp;lt;/html&amp;gt;&lt;br&gt;
&lt;/code&gt;);&lt;br&gt;
}&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;style.css&lt;br&gt;
 &lt;code&gt;#gallery{&lt;br&gt;
      display: flex;&lt;br&gt;
      flex-wrap: wrap;&lt;br&gt;
      gap: 10px;&lt;br&gt;
    }&lt;br&gt;
    .image-item{&lt;br&gt;
      position: relative;&lt;br&gt;
      width: 150px;&lt;br&gt;
    }&lt;br&gt;
    .image-item img{&lt;br&gt;
      width: 100%;&lt;br&gt;
      border-radius: 5px;&lt;br&gt;
    }&lt;br&gt;
    .image-item button{&lt;br&gt;
      position: absolute;&lt;br&gt;
      bottom: 5px;&lt;br&gt;
      left: 50%;&lt;br&gt;
      transform: translateX(-50%);&lt;br&gt;
      background-color: rgba(0,0,0,0.5);&lt;br&gt;
      color: white;&lt;br&gt;
      border: none;&lt;br&gt;
      padding: 5px;&lt;br&gt;
      cursor: pointer;&lt;br&gt;
    }&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The result of the above implementation is:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fatw6x0uoyvxqhx2gw98i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fatw6x0uoyvxqhx2gw98i.png" alt="Image description" width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4pw9o3ixdj0x8qbmbsu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4pw9o3ixdj0x8qbmbsu.png" alt="Image description" width="800" height="543"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascriptwindow</category>
      <category>windowopen</category>
    </item>
  </channel>
</rss>
