223015b kap2: demos + barn rgb/cmyk
- 18 demos aus refactor/didaktik-rewrite-2026 cherry-picked (aliasing-paar, byte-fuer-byte, container-vs-codec, drei-dateien, jpeg-pipeline, kap02-05-eroeffner, kb-vs-kib, nyquist-diagram, pivot-signal-zu-byte, psychoakustik/psychovisualitaet-grafik, raster-vs-vektor, summary-kap02, summary-organizer, usb-c-drei-achsen) - barn-rgb.png + barn-cmyk.png neu generiert (analog zu ybcbr.webp, kanaltrennung mit korrekter k-extraktion) - lv-original-vs-fake.jpg + 02-bild-audio-video.md slides wired up
This commit is contained in:
@@ -0,0 +1,212 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Raster vs. Vektor — Pixel oder Anweisung?</title>
|
||||
<style>
|
||||
:root {
|
||||
--dark: #1a1a2e;
|
||||
--muted: #6b7280;
|
||||
--soft: #f8fafc;
|
||||
--border: #cbd5e1;
|
||||
--hl: #d63384;
|
||||
--raster: #ea580c;
|
||||
--vektor: #2563eb;
|
||||
}
|
||||
html, body { margin: 0; padding: 0; background: #fff; font-family: system-ui, -apple-system, sans-serif; color: var(--dark); }
|
||||
body { padding: 30px 40px; }
|
||||
h1 { text-align: center; margin: 0 0 6px; font-size: 1.75rem; }
|
||||
.sub { text-align: center; color: var(--muted); margin-bottom: 24px; font-size: 1.05rem; }
|
||||
.sub strong { color: var(--dark); }
|
||||
|
||||
.pair {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 22px;
|
||||
max-width: 1180px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.col {
|
||||
border: 2px solid;
|
||||
border-radius: 12px;
|
||||
padding: 16px 18px;
|
||||
background: #fff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
}
|
||||
.col.raster { border-color: var(--raster); }
|
||||
.col.vektor { border-color: var(--vektor); }
|
||||
|
||||
.col-head { display: flex; justify-content: space-between; align-items: baseline; }
|
||||
.col-name { font-size: 1.3rem; font-weight: 700; }
|
||||
.col.raster .col-name { color: var(--raster); }
|
||||
.col.vektor .col-name { color: var(--vektor); }
|
||||
.col-tag {
|
||||
font-size: 0.72rem;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.12em;
|
||||
color: var(--muted);
|
||||
}
|
||||
.col-desc { font-size: 0.85rem; color: var(--muted); line-height: 1.4; }
|
||||
|
||||
.views {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 8px;
|
||||
}
|
||||
.view { display: flex; flex-direction: column; gap: 4px; }
|
||||
.view-label {
|
||||
font-size: 0.68rem;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.1em;
|
||||
color: var(--muted);
|
||||
text-align: center;
|
||||
}
|
||||
.view-canvas {
|
||||
background: var(--soft);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 6px;
|
||||
aspect-ratio: 1.4;
|
||||
overflow: hidden;
|
||||
}
|
||||
.view-canvas svg { display: block; width: 100%; height: 100%; }
|
||||
|
||||
.stats {
|
||||
background: var(--soft);
|
||||
border-radius: 6px;
|
||||
padding: 8px 12px;
|
||||
font-family: ui-monospace, monospace;
|
||||
font-size: 0.82rem;
|
||||
color: var(--dark);
|
||||
line-height: 1.5;
|
||||
}
|
||||
.stats .key { color: var(--muted); }
|
||||
.stats .val { font-weight: 700; }
|
||||
|
||||
.verdict {
|
||||
margin-top: 22px;
|
||||
max-width: 1180px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
text-align: center;
|
||||
border: 2px solid var(--hl);
|
||||
border-radius: 12px;
|
||||
padding: 14px 22px;
|
||||
}
|
||||
.verdict-q { font-size: 1.1rem; font-weight: 700; color: var(--hl); }
|
||||
.verdict-a { font-size: 0.93rem; color: var(--dark); margin-top: 4px; }
|
||||
.verdict-a strong { color: var(--hl); }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Raster vs. Vektor — Pixel oder Anweisung?</h1>
|
||||
<div class="sub">Beide zeigen ein Häkchen. Wenn man <strong>reinzoomt</strong>, kommt die Wahrheit raus.</div>
|
||||
|
||||
<div class="pair">
|
||||
|
||||
<div class="col raster">
|
||||
<div class="col-head">
|
||||
<span class="col-name">Raster</span>
|
||||
<span class="col-tag">PNG · JPEG · GIF</span>
|
||||
</div>
|
||||
<div class="col-desc">Ein Gitter aus Pixel-Farbwerten. Jede Position ist festgelegt.</div>
|
||||
|
||||
<div class="views">
|
||||
<div class="view">
|
||||
<div class="view-label">Original (32 × 22 px)</div>
|
||||
<div class="view-canvas">
|
||||
<svg viewBox="0 0 320 220" preserveAspectRatio="xMidYMid meet">
|
||||
<rect x="0" y="0" width="320" height="220" fill="#f8fafc"/>
|
||||
<g shape-rendering="crispEdges">
|
||||
<rect x="20" y="120" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="40" y="140" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="60" y="160" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="80" y="180" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="100" y="160" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="120" y="140" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="140" y="120" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="160" y="100" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="180" y="80" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="200" y="60" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="220" y="40" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="240" y="20" width="20" height="20" fill="#ea580c"/>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div class="view">
|
||||
<div class="view-label">4× Zoom</div>
|
||||
<div class="view-canvas">
|
||||
<svg viewBox="80 60 160 160" preserveAspectRatio="xMidYMid meet">
|
||||
<rect x="0" y="0" width="320" height="220" fill="#f8fafc"/>
|
||||
<g shape-rendering="crispEdges">
|
||||
<rect x="20" y="120" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="40" y="140" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="60" y="160" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="80" y="180" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="100" y="160" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="120" y="140" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="140" y="120" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="160" y="100" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="180" y="80" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="200" y="60" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="220" y="40" width="20" height="20" fill="#ea580c"/>
|
||||
<rect x="240" y="20" width="20" height="20" fill="#ea580c"/>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="stats">
|
||||
<div><span class="key">Speicher:</span> <span class="val">32 × 22 × 3 Byte = 2 112 Byte</span></div>
|
||||
<div><span class="key">Beim Zoom:</span> <span class="val">pixelig — Information ist erschöpft</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col vektor">
|
||||
<div class="col-head">
|
||||
<span class="col-name">Vektor</span>
|
||||
<span class="col-tag">SVG · PDF · Schriftarten</span>
|
||||
</div>
|
||||
<div class="col-desc">Mathematische Anweisungen: <code style="background:#0f0f23;color:#5fb3e4;padding:0 4px;border-radius:3px;">polyline 30,110 → 90,170 → 250,30</code></div>
|
||||
|
||||
<div class="views">
|
||||
<div class="view">
|
||||
<div class="view-label">Original</div>
|
||||
<div class="view-canvas">
|
||||
<svg viewBox="0 0 320 220" preserveAspectRatio="xMidYMid meet">
|
||||
<rect x="0" y="0" width="320" height="220" fill="#f8fafc"/>
|
||||
<polyline points="30,130 90,190 270,30" stroke="#2563eb" stroke-width="14" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div class="view">
|
||||
<div class="view-label">4× Zoom</div>
|
||||
<div class="view-canvas">
|
||||
<svg viewBox="80 60 160 160" preserveAspectRatio="xMidYMid meet">
|
||||
<rect x="0" y="0" width="320" height="220" fill="#f8fafc"/>
|
||||
<polyline points="30,130 90,190 270,30" stroke="#2563eb" stroke-width="14" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="stats">
|
||||
<div><span class="key">Speicher:</span> <span class="val">3 Punkte + Strichbreite = ~80 Byte</span></div>
|
||||
<div><span class="key">Beim Zoom:</span> <span class="val">scharf — wird neu berechnet</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="verdict">
|
||||
<div class="verdict-q">Pixel sind festgenagelt. Vektoren werden bei jedem Zoom <strong>neu berechnet</strong>.</div>
|
||||
<div class="verdict-a">Faustregel: <strong>Foto → Raster</strong> (kann nicht „neu berechnet" werden). <strong>Logo, Icon, Schrift → Vektor</strong> (skalierbar ohne Verlust).</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user