Camera stream resulation html and xga

I want to make a camera without using html, like the larger xga in the example

What do you mean, "without HTML", what do you mean "like the larger XGA"?

If you have to sit through the videos on that site to get details, most people here will pass and move on. Please post cogent details of your question, here, in their entirety.

In other words, please explain fully.

Also, have you at least duplicated the tutorial with your own equipment?

idnotu , Larger camera than the example. (like xga size)

I want chicken nuggets with hot sauce

If that is a full explanation, I'd love to see you summarize something. Also you left one question unanswered...

No, this is not a solution, I marked it because it sounds funny.

You didn't answer...

idnotu

esp32 is not with me right now

Is that some kind of magical incantation?

idnotu : i dont understand

Is English not your first language? Try using Google translate.

since it wouldn't be without html, what is the real solution with html

You still haven't answered the original questions that I asked. Well, now there are two:

  1. Have you tried the tutorial, as it is?
  2. Why and how do you want to do it "without HTML"? How then do you want to do it?

I think these questions should not be difficult to answer.

I couldn't understand even though I translated

esp32 not with me

When it was with you, what did you do with it?

Do not send me personal messages. It doesn't bother me, but it will not get you the help that you want. Please post all messages here publically.

i uploaded different code

My hovercraft is full of eels. What code, where did you upload it? What happened then?

<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1">
        <title>ESP32 CAM OV2640 Camera </title>
        <style>
            body {
                font-family: Arial,Helvetica,sans-serif;
                background: #181818;
                color: #EFEFEF;
                font-size: 16px
            }
            h2 {
                font-size: 18px
            }
            section.main {
                display: flex
            }
            #menu,section.main {
                flex-direction: column
            }
            #menu {
                display: none;
                flex-wrap: nowrap;
                min-width: 340px;
                background: #363636;
                padding: 8px;
                border-radius: 4px;
                margin-top: -10px;
                margin-right: 10px;
            }
            #content {
                display: flex;
                flex-wrap: wrap;
                align-items: stretch
            }
            figure {
                padding: 0px;
                margin: 0;
                -webkit-margin-before: 0;
                margin-block-start: 0;
                -webkit-margin-after: 0;
                margin-block-end: 0;
                -webkit-margin-start: 0;
                margin-inline-start: 0;
                -webkit-margin-end: 0;
                margin-inline-end: 0
            }
            figure img {
                display: block;
                width: 100%;
                height: auto;
                border-radius: 4px;
                margin-top: 8px;
            }
            @media (min-width: 800px) and (orientation:landscape) {
                #content {
                    display:flex;
                    flex-wrap: nowrap;
                    align-items: stretch
                }
                figure img {
                    display: block;
                    max-width: 100%;
                    max-height: calc(100vh - 40px);
                    width: auto;
                    height: auto
                }
                figure {
                    padding: 0 0 0 0px;
                    margin: 0;
                    -webkit-margin-before: 0;
                    margin-block-start: 0;
                    -webkit-margin-after: 0;
                    margin-block-end: 0;
                    -webkit-margin-start: 0;
                    margin-inline-start: 0;
                    -webkit-margin-end: 0;
                    margin-inline-end: 0
                }
            }
            section#buttons {
                display: flex;
                flex-wrap: nowrap;
                justify-content: space-between
            }
            #nav-toggle {
                cursor: pointer;
                display: block
            }
            #nav-toggle-cb {
                outline: 0;
                opacity: 0;
                width: 0;
                height: 0
            }
            #nav-toggle-cb:checked+#menu {
                display: flex
            }
            .input-group {
                display: flex;
                flex-wrap: nowrap;
                line-height: 22px;
                margin: 5px 0
            }
            .input-group>label {
                display: inline-block;
                padding-right: 10px;
                min-width: 47%
            }
            .input-group input,.input-group select {
                flex-grow: 1
            }
            .range-max,.range-min {
                display: inline-block;
                padding: 0 5px
            }
            button, .button {
                display: block;
                margin: 5px;
                padding: 0 12px;
                border: 0;
                line-height: 28px;
                cursor: pointer;
                color: #fff;
                background: #ff3034;
                border-radius: 5px;
                font-size: 16px;
                outline: 0
            }
            .save {
                position: absolute;
                right: 25px;
                top: 0px;
                height: 16px;
                line-height: 16px;
                padding: 0 4px;
                text-decoration: none;
                cursor: pointer
            }
            button:hover {
                background: #ff494d
            }
            button:active {
                background: #f21c21
            }
            button.disabled {
                cursor: default;
                background: #a0a0a0
            }
            input[type=range] {
                -webkit-appearance: none;
                width: 100%;
                height: 22px;
                background: #363636;
                cursor: pointer;
                margin: 0
            }
            input[type=range]:focus {
                outline: 0
            }
            input[type=range]::-webkit-slider-runnable-track {
                width: 100%;
                height: 2px;
                cursor: pointer;
                background: #EFEFEF;
                border-radius: 0;
                border: 0 solid #EFEFEF
            }
            input[type=range]::-webkit-slider-thumb {
                border: 1px solid rgba(0,0,30,0);
                height: 22px;
                width: 22px;
                border-radius: 50px;
                background: #ff3034;
                cursor: pointer;
                -webkit-appearance: none;
                margin-top: -11.5px
            }
            input[type=range]:focus::-webkit-slider-runnable-track {
                background: #EFEFEF
            }
            input[type=range]::-moz-range-track {
                width: 100%;
                height: 2px;
                cursor: pointer;
                background: #EFEFEF;
                border-radius: 0;
                border: 0 solid #EFEFEF
            }
            input[type=range]::-moz-range-thumb {
                border: 1px solid rgba(0,0,30,0);
                height: 22px;
                width: 22px;
                border-radius: 50px;
                background: #ff3034;
                cursor: pointer
            }
            input[type=range]::-ms-track {
                width: 100%;
                height: 2px;
                cursor: pointer;
                background: 0 0;
                border-color: transparent;
                color: transparent
            }
            input[type=range]::-ms-fill-lower {
                background: #EFEFEF;
                border: 0 solid #EFEFEF;
                border-radius: 0
            }
            input[type=range]::-ms-fill-upper {
                background: #EFEFEF;
                border: 0 solid #EFEFEF;
                border-radius: 0
            }
            input[type=range]::-ms-thumb {
                border: 1px solid rgba(0,0,30,0);
                height: 22px;
                width: 22px;
                border-radius: 50px;
                background: #ff3034;
                cursor: pointer;
                height: 2px
            }
            input[type=range]:focus::-ms-fill-lower {
                background: #EFEFEF
            }
            input[type=range]:focus::-ms-fill-upper {
                background: #363636
            }
            .switch {
                display: block;
                position: relative;
                line-height: 22px;
                font-size: 16px;
                height: 22px
            }
            .switch input {
                outline: 0;
                opacity: 0;
                width: 0;
                height: 0
            }
            .slider {
                width: 50px;
                height: 22px;
                border-radius: 22px;
                cursor: pointer;
                background-color: grey
            }
            .slider,.slider:before {
                display: inline-block;
                transition: .4s
            }
            .slider:before {
                position: relative;
                content: "";
                border-radius: 50%;
                height: 16px;
                width: 16px;
                left: 4px;
                top: 3px;
                background-color: #fff
            }
            input:checked+.slider {
                background-color: #ff3034
            }
            input:checked+.slider:before {
                -webkit-transform: translateX(26px);
                transform: translateX(26px)
            }
            select {
                border: 1px solid #363636;
                font-size: 14px;
                height: 22px;
                outline: 0;
                border-radius: 5px
            }
            .image-container {
                position: relative;
                min-width: 160px
            }
            .close {
                position: absolute;
                right: 5px;
                top: 5px;
                background: #ff3034;
                width: 16px;
                height: 16px;
                border-radius: 100px;
                color: #fff;
                text-align: center;
                line-height: 18px;
                cursor: pointer
            }
            .hidden {
                display: none
            }
        </style>
    </head>
    <body>
        <section class="main">
            <div id="logo">
                <label for="nav-toggle-cb" id="nav-toggle">&#9776;&nbsp;&nbsp;Toggle settings</label>
            </div>
            <div id="content">
                <div id="sidebar">
                    <input type="checkbox" id="nav-toggle-cb" checked="checked">
                    <nav id="menu">
                        <div align="center">
                        
                        <div class="input-group" id="framesize-group">
                            <label for="framesize">Resolution</label>
                            <select id="framesize" class="default-action">
                                <option value="10">UXGA(1600x1200)</option>
                                <option value="9">SXGA(1280x1024)</option>
                                <option value="8">XGA(1024x768)</option>
                                <option value="7">SVGA(800x600)</option>
                                <option value="6">VGA(640x480)</option>
                                <option value="5" selected="selected">CIF(400x296)</option>
                                <option value="4">QVGA(320x240)</option>
                                <option value="3">HQVGA(240x176)</option>
                                <option value="0">QQVGA(160x120)</option>
                            </select>
                        </div>
                        <section id="buttons">
                            <button id="get-still">Get Still</button>
                            <button id="toggle-stream">Start Stream</button>
                        </section>
                    </nav>
                </div>
                <figure>
                    <div id="stream-container" class="image-container hidden">
                        <a id="save-still" href="#" class="button save" download="capture.jpg">Save</a>
                        <div class="close" id="close-stream">×</div>
                        <img id="stream" src="">
                    </div>
                </figure>
            </div>
        </section>
        <script>
document.addEventListener('DOMContentLoaded', function (event) {
  var baseHost = document.location.origin
  var streamUrl = baseHost + ':81'
  const hide = el => {
      el.classList.add('hidden')
  }
  const show = el => {
      el.classList.remove('hidden')
  }
  const disable = el => {
      el.classList.add('disabled')
      el.disabled = true
  }
  const enable = el => {
      el.classList.remove('disabled')
      el.disabled = false
  }
  const updateValue = (el, value, updateRemote) => {
      updateRemote = updateRemote == null ? true : updateRemote
      let initialValue
      if (el.type === 'checkbox') {
          initialValue = el.checked
          value = !!value
          el.checked = value
      } else {
          initialValue = el.value
          el.value = value
      }

      if (updateRemote && initialValue !== value) {
          updateConfig(el);
      } else if(!updateRemote){
          if(el.id === "aec"){
              value ? hide(exposure) : show(exposure)
          } else if(el.id === "agc"){
              if (value) {
                  show(gainCeiling)
                  hide(agcGain)
              } else {
                  hide(gainCeiling)
                  show(agcGain)
              }
          } else if(el.id === "awb_gain"){
              value ? show(wb) : hide(wb)
          } else if(el.id === "face_recognize"){
              value ? enable(enrollButton) : disable(enrollButton)
          }
      }
  }

  //HTTP GET with parameter of each element
  function updateConfig (el) {
      let value
      switch (el.type) {
          case 'checkbox':
          value = el.checked ? 1 : 0
          break
          case 'range':
          case 'select-one':
          value = el.value
          break
          case 'button':
          case 'submit':
          value = '1'
          break
          default:
          return
      }
      const query = `${baseHost}/control?var=${el.id}&val=${value}`
      fetch(query)
      .then(response => {
            console.log(`request to ${query} finished, status: ${response.status}`)
            })
  }
  document
  .querySelectorAll('.close')
  .forEach(el => {
           el.onclick = () => {
           hide(el.parentNode)
           }
           })
  // read initial values
  fetch(`${baseHost}/status`)
  .then(function (response) {
        return response.json()
        })
  .then(function (state) {
        document
        .querySelectorAll('.default-action')
        .forEach(el => {
                 updateValue(el, state[el.id], false)
                 })
        })
  const view = document.getElementById('stream')
  const viewContainer = document.getElementById('stream-container')
  const stillButton = document.getElementById('get-still')
  const streamButton = document.getElementById('toggle-stream')
  const closeButton = document.getElementById('close-stream')
  const saveButton = document.getElementById('save-still')
                          
  const stopStream = () => {
      window.stop();
      streamButton.innerHTML = 'Start Stream'
  }
  const startStream = () => {
      view.src = `${streamUrl}/stream`
      show(viewContainer)
      streamButton.innerHTML = 'Stop Stream'
  }
  // Attach actions to buttons
  stillButton.onclick = () => {
      stopStream()
      view.src = `${baseHost}/capture?_cb=${Date.now()}`
      show(viewContainer)
  }
  closeButton.onclick = () => {
      stopStream()
      hide(viewContainer)
  }
  streamButton.onclick = () => {
      const streamEnabled = streamButton.innerHTML === 'Stop Stream'
      if (streamEnabled) {
          stopStream()
      } else {
          startStream()
      }
  }

  saveButton.onclick = () => {
      var canvas = document.createElement("canvas");
      canvas.width = view.width;
      canvas.height = view.height;
      document.body.appendChild(canvas);
      var context = canvas.getContext('2d');
      context.drawImage(view,0,0);
      try {
      var dataURL = canvas.toDataURL('image/jpeg');
      saveButton.href = dataURL;
      var d = new Date();
      saveButton.download = d.getFullYear() + ("0"+(d.getMonth()+1)).slice(-2) + ("0" + d.getDate()).slice(-2) + ("0" + d.getHours()).slice(-2) + ("0" + d.getMinutes()).slice(-2) + ("0" + d.getSeconds()).slice(-2) + ".jpg";
      } catch (e) {
      console.error(e);
      }
      canvas.parentNode.removeChild(canvas);
  }

  // Attach default on change action
  document
  .querySelectorAll('.default-action')
  .forEach(el => {
           el.onchange = () => updateConfig(el)
           })

  // Detection and framesize
  const framesize = document.getElementById('framesize')
  framesize.onchange = () => {
      updateConfig(framesize)
      if (framesize.value > 5) {
          updateValue(detect, false)
          updateValue(recognize, false)
      }
  }
})
        </script>
    </body>
</html>

How can I shorten the app.http.cpp part?