291291 }
292292
293293 .toggle-text { font-weight : 500 ; color : white; }
294+
295+ .warning-banner {
296+ background-color : # 78350f ;
297+ border : 1px solid # f59e0b ;
298+ color : # fde68a ;
299+ border-radius : 0.5rem ;
300+ padding : 0.75rem 1rem ;
301+ margin-bottom : 1rem ;
302+ font-size : 0.875rem ;
303+ text-align : center;
304+ }
294305 </ style >
295306</ head >
296307
@@ -311,6 +322,10 @@ <h1 class="title">Visual Centroid Calculator</h1>
311322 < p id ="fileName " class ="file-name "> </ p >
312323 </ div >
313324
325+ < div id ="noAlphaWarning " class ="warning-banner hidden ">
326+ ⚠ This image has no transparency. Results may not be meaningful — this tool is designed for images with transparent regions.
327+ </ div >
328+
314329 <!-- Main Content Area -->
315330 < div id ="content-area " class ="hidden ">
316331 <!-- Canvas and Results Wrapper -->
@@ -421,6 +436,8 @@ <h3>No image selected</h3>
421436 const bboxToggle = document . getElementById ( 'bboxToggle' ) ;
422437 const crosshairsToggle = document . getElementById ( 'crosshairsToggle' ) ;
423438
439+ const noAlphaWarning = document . getElementById ( 'noAlphaWarning' ) ;
440+
424441 let currentImageState = { img : null , centroid : null , bboxCenter : null } ;
425442
426443 imageUpload . addEventListener ( 'change' , ( event ) => handleFile ( event . target . files [ 0 ] ) ) ;
@@ -496,6 +513,9 @@ <h3>No image selected</h3>
496513 ctx . clearRect ( 0 , 0 , canvas . width , canvas . height ) ;
497514 ctx . drawImage ( img , 0 , 0 ) ;
498515
516+ const hasTransparency = checkForTransparency ( ) ;
517+ noAlphaWarning . classList . toggle ( 'hidden' , hasTransparency ) ;
518+
499519 const centroid = calculateCentroid ( ) ;
500520 const bboxCenter = { x : img . width / 2 , y : img . height / 2 } ;
501521
@@ -510,6 +530,15 @@ <h3>No image selected</h3>
510530 updateVisualVisibility ( ) ;
511531 }
512532
533+ function checkForTransparency ( ) {
534+ const imageData = ctx . getImageData ( 0 , 0 , canvas . width , canvas . height ) ;
535+ const data = imageData . data ;
536+ for ( let i = 3 ; i < data . length ; i += 4 ) {
537+ if ( data [ i ] < 255 ) return true ;
538+ }
539+ return false ;
540+ }
541+
513542 function calculateCentroid ( ) {
514543 const imageData = ctx . getImageData ( 0 , 0 , canvas . width , canvas . height ) ;
515544 const data = imageData . data ;
0 commit comments