East Gadsden High School
Class of 2006
20 Years Later

July 31 – August 2, 2026
Quincy • Tallahassee • Havana, Florida

Thank You


Two hundred and four of us walked across that stage in 2006. Twenty years later, we filled a lounge, a park, a ballroom, a sanctuary, and a brunch table.Thank you to every classmate who traveled, paid, planned, cooked, decorated, set up, broke down, and showed up.The photos are below. Save what you want. Share all of it.


The Photos


Reunion Weekend Photos & Videos
Professional coverage from the whole weekend. Photography by @nikesmilez

Throwback Photos & Videos
Everything the class dug up. High school, football games, prom, graduation.

Legacy Gala Presentation
The deck from Saturday night. Class data, Class Acts, honor graduates, officers, sponsors, administration, and the Then & Now slides.

Social Media Picture Frame
Still live. Put the 20 Years Later frame on your profile photo.


The Weekend


DayEventWhere
Fri (7/31)Reunion LoungeLRS, Quincy
Sat (8/1)Jaguar JamSt. Hebron Park, Quincy
Sat (8/1)Legacy GalaBricks & Brass, Tallahassee
Sun (8/2)Church ServiceNew Jerusalem, Havana
Sun (8/2)Farewell Brunch1908 Havana

Friday we mixed and mingled. Saturday morning we cooked out at the park. Saturday night we put on black tie for the Legacy Gala. Sunday we worshipped together and closed it out over brunch in 20 shades of blue.


Stay Connected


The weekend is over. The class is not.
Keep up with what comes next, and make sure we can reach you.

If you never submitted your contact info, do it now. That list is how we reach you for the 25th.


Help Us Find Classmates


Some classmates may have never heard about the reunion at all. If you are in touch with anyone who missed it, send them this page. We want everyone on the list before next time.


Questions or Feedback?


Reach the reunion planning team through the Facebook group or send an email.


Once classmates. Forever connected.

Social Media Picture Frame

Frame Generator (Automatic)

Once classmates. Forever connected.

Frame your photo

Put the 20 Years Later frame on your profile picture. Your photo stays on your device.

Zoom
Tilt

Saved to your downloads

Your framed photo

On a phone, press and hold the image above, then choose Save to Photos.

Drag to move. Pinch or scroll to zoom.

(function(){ /* ========================================================== SETTINGS ========================================================== */ var FRAME_SRC = 'https://eghs2006.com/assets/images/image01.png'; /* URL of your transparent frame PNG */ var OUT_SIZE = 800; /* downloaded image size in pixels */ var FILE_NAME = 'eghs-2006-reunion.png'; /* The clear photo window inside the frame, as fractions of the square. Measured from your frame file. Leave these alone unless the art changes. */ var WIN = { cx:0.5419, cy:0.3919, w:0.546, h:0.449 }; /* ========================================================== */ var $ = function(id){ return document.getElementById(id); }; var board=$('ef-board'), cv=$('ef-canvas'), ctx=cv.getContext('2d'), fileIn=$('ef-file'); var img=null, frame=null, scale=1, rot=0, ox=0, oy=0, blobUrl=null; function say(msg){ var a=$('ef-alert'); a.textContent=msg; a.className='ef-alert on'; } function clearSay(){ $('ef-alert').className='ef-alert'; } /* ---- load frame, then confirm the canvas is exportable ---- */ function loadFrame(useCors){ var f=new Image(); if(useCors) f.crossOrigin='anonymous'; f.onload=function(){ frame=f; if(isTainted()){ if(!useCors){ frame=null; loadFrame(true); return; } say('The frame image is blocked from being saved. Host frame.png on the same domain as this page.'); return; } clearSay(); draw(); }; f.onerror=function(){ if(!useCors){ loadFrame(true); return; } say('The frame image did not load. Check FRAME_SRC in the code.'); }; f.src=FRAME_SRC; } function isTainted(){ var t=document.createElement('canvas'); t.width=t.height=1; try{ t.getContext('2d').drawImage(frame,0,0,1,1); t.toDataURL(); return false; } catch(e){ return true; } } loadFrame(false); /* ---- drawing ---- */ function paint(c,size){ c.clearRect(0,0,size,size); c.fillStyle='#ffffff'; c.fillRect(0,0,size,size); if(img){ var cover=Math.max(WIN.w*size/img.width, WIN.h*size/img.height)*scale; var w=img.width*cover, h=img.height*cover; c.save(); c.translate((WIN.cx+ox)*size, (WIN.cy+oy)*size); c.rotate(rot*Math.PI/180); c.drawImage(img,-w/2,-h/2,w,h); c.restore(); } if(frame) c.drawImage(frame,0,0,size,size); } function draw(){ paint(ctx,cv.width); } function fit(){ var dpr=Math.min(window.devicePixelRatio||1,3); var px=Math.round(board.clientWidth*dpr)||600; if(cv.width!==px){ cv.width=px; cv.height=px; } draw(); } window.addEventListener('resize',fit); /* ---- pick a photo ---- */ $('ef-pick').addEventListener('click',function(){ fileIn.click(); }); $('ef-change').addEventListener('click',function(){ fileIn.click(); }); fileIn.addEventListener('change',function(e){ if(e.target.files[0]) handle(e.target.files[0]); }); function handle(file){ /* Some phone pickers hand back a blank MIME type, so fall back to the file name. Anything that is clearly not an image gets stopped by the decoder below instead. */ var okType = /^image\//i.test(file.type || ''); var okName = /\.(png|jpe?g|webp|heic|heif|gif|avif|bmp|tiff?)$/i.test(file.name || ''); if(file.type && !okType && !okName){ say('That file is not an image. Pick a PNG, JPG, or HEIC photo.'); return; } var url=URL.createObjectURL(file), i=new Image(); i.onload=function(){ img=i; reset(); clearSay(); $('ef-stage').className='ef-stage on'; $('ef-result').className='ef-result'; $('ef-pick').textContent='Choose a different photo'; fit(); URL.revokeObjectURL(url); }; i.onerror=function(){ say('That photo would not open. Try saving it as a JPG first.'); }; i.src=url; } /* ---- controls ---- */ function reset(){ scale=1; rot=0; ox=0; oy=0; $('ef-zoom').value=100; $('ef-rot').value=0; draw(); } $('ef-reset').addEventListener('click',reset); $('ef-zoom').addEventListener('input',function(e){ scale=e.target.value/100; draw(); }); $('ef-rot').addEventListener('input',function(e){ rot=+e.target.value; draw(); }); function setZoom(v){ scale=Math.min(4,Math.max(1,v)); $('ef-zoom').value=Math.round(scale*100); draw(); } /* ---- drag ---- */ var drag=false,lx=0,ly=0,touches=0; board.addEventListener('pointerdown',function(e){ if(!img||touches>1) return; drag=true; lx=e.clientX; ly=e.clientY; if(board.setPointerCapture) board.setPointerCapture(e.pointerId); }); board.addEventListener('pointermove',function(e){ if(!drag) return; var r=board.getBoundingClientRect(); ox+=(e.clientX-lx)/r.width; oy+=(e.clientY-ly)/r.height; lx=e.clientX; ly=e.clientY; draw(); }); ['pointerup','pointercancel','pointerleave'].forEach(function(ev){ board.addEventListener(ev,function(){ drag=false; }); }); /* ---- wheel + pinch zoom ---- */ board.addEventListener('wheel',function(e){ if(!img) return; e.preventDefault(); setZoom(scale*(e.deltaY<0?1.06:0.94)); },{passive:false}); var pStart=0,pScale=1; function dist(t){ return Math.hypot(t[0].clientX-t[1].clientX,t[0].clientY-t[1].clientY); } board.addEventListener('touchstart',function(e){ touches=e.touches.length; if(touches===2){ drag=false; pStart=dist(e.touches); pScale=scale; } },{passive:true}); board.addEventListener('touchmove',function(e){ if(e.touches.length===2&&pStart){ e.preventDefault(); setZoom(pScale*dist(e.touches)/pStart); } },{passive:false}); board.addEventListener('touchend',function(e){ touches=e.touches.length; if(touches<2) pStart=0; }); /* ---- save ---- */ $('ef-save').addEventListener('click',function(){ if(!img){ fileIn.click(); return; } if(!frame){ say('The frame is still loading. Try again in a second.'); return; } var out=document.createElement('canvas'); out.width=out.height=OUT_SIZE; paint(out.getContext('2d'),OUT_SIZE); try{ out.toBlob(function(blob){ if(blobUrl) URL.revokeObjectURL(blobUrl); blobUrl=URL.createObjectURL(blob); $('ef-out').src=blobUrl; $('ef-result').className='ef-result on'; var a=document.createElement('a'); a.href=blobUrl; a.download=FILE_NAME; document.body.appendChild(a); a.click(); a.remove(); },'image/png'); }catch(err){ say('The frame image is blocked from being saved. Host frame.png on the same domain as this page.'); } }); fit(); })();

The Frame (Manual)

On a phone, press and hold the image above, then choose Save to Photos.On a computer, right-click and select Save Image As.