File size: 6,192 Bytes
2c51ce3 8c6f346 2c51ce3 12bf249 2c51ce3 12bf249 2c51ce3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>이미지 겹치기 편집기 (여러 이미지 지원)</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h1>이미지 겹치기 편집기</h1>
<p>배경 이미지 위에 여러 개의 배경 제거된 이미지를 배치하고 각각 조절한 후, 조절된 이미지들만 PNG로 추출합니다.</p>
<div class="upload-container">
<div class="upload-box">
<span class="upload-label">1. 원본 이미지 선택</span>
<input type="file" id="background-input" class="file-input" accept="image/*">
<label for="background-input" class="upload-button">원본 이미지 업로드</label>
</div>
<div class="upload-box">
<span class="upload-label">2. 배경 제거된 이미지 선택 (추출될 PNG, 여러 개 가능)</span>
<input type="file" id="overlay-input" class="file-input" accept="image/*">
<label for="overlay-input" class="upload-button">겹칠 이미지 업로드</label>
</div>
</div>
<div class="control-panel">
<div class="control-group">
<h3>위치 및 크기 (선택된 이미지)</h3>
<div class="slider-container">
<label for="scale-slider">크기:</label>
<input type="range" id="scale-slider" min="10" max="500" value="100" disabled>
<span id="scale-value" class="value-display">100%</span>
</div>
<div class="slider-container">
<label for="rotation-slider">회전:</label>
<input type="range" id="rotation-slider" min="0" max="360" value="0" disabled>
<span id="rotation-value" class="value-display">0°</span>
</div>
</div>
<div class="control-group">
<h3>예시 이미지 선택</h3>
<div id="example-images-container" style="display: flex; justify-content: space-around; margin-top: 15px;">
<img src="1.png" alt="Example 1" class="example-img" data-filename="1.png" style="width: 160px; height: 160px; cursor: pointer; border: 1px solid #ccc;">
<img src="2.png" alt="Example 2" class="example-img" data-filename="2.png" style="width: 160px; height: 160px; cursor: pointer; border: 1px solid #ccc;">
<img src="3.png" alt="Example 3" class="example-img" data-filename="3.png" style="width: 160px; height: 160px; cursor: pointer; border: 1px solid #ccc;">
<img src="4.png" alt="Example 4" class="example-img" data-filename="4.png" style="width: 160px; height: 160px; cursor: pointer; border: 1px solid #ccc;">
</div>
</div>
<div class="control-group filter-panel">
</div>
<div class="control-group" id="layers-panel">
<h3>레이어 목록</h3>
<div class="layer-option">
<button id="delete-layer-btn" class="danger-btn" disabled>선택 레이어 삭제</button>
</div>
<div id="layers-list" class="layers-list">
</div>
</div>
</div>
<div class="canvas-container">
<canvas id="canvas" width="800" height="600"></canvas>
</div>
<!-- 필터 설정 섹션을 이미지 아래로 이동 -->
<div class="filter-panel">
<h3>필터 설정 (선택 레이어에 적용)</h3>
<div class="filter-sliders">
<div class="filter-slider-container">
<label for="temperature-slider">색온도:</label>
<input type="range" id="temperature-slider" min="-100" max="100" value="0" step="5" class="large-slider">
<span id="temperature-value" class="value-display">0</span>
</div>
<div class="filter-slider-container">
<label for="brightness-slider">밝기:</label>
<input type="range" id="brightness-slider" min="0" max="200" value="100" step="5" class="large-slider">
<span id="brightness-value" class="value-display">100%</span>
</div>
<div class="filter-slider-container">
<label for="contrast-slider">대비:</label>
<input type="range" id="contrast-slider" min="50" max="150" value="100" step="5" class="large-slider">
<span id="contrast-value" class="value-display">100%</span>
</div>
<div class="filter-slider-container">
<label for="saturation-slider">채도:</label>
<input type="range" id="saturation-slider" min="0" max="200" value="100" step="5" class="large-slider">
<span id="saturation-value" class="value-display">100%</span>
</div>
</div>
<div class="filter-buttons">
<button id="reset-filter-btn" class="danger-btn">필터 초기화</button>
</div>
</div>
<div class="button-container">
<button id="generate-btn" class="primary-btn" disabled>이미지 합치기</button>
<button id="reset-all-btn" class="danger-btn">처음부터</button>
<button id="download-btn" class="info-btn" disabled>다운로드</button>
</div>
<div class="preview-container" id="preview-container">
<h3>합성된 이미지 미리보기</h3>
<img id="preview-img" alt="합성 이미지 미리보기">
</div>
</div>
<!-- 스크립트 파일 로드 -->
<script src="filter.js"></script>
<script src="script.js"></script>
</body>
</html> |