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,189 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Was wir über Kompression gelernt haben</title>
|
||||
<style>
|
||||
:root {
|
||||
--dark: #1a1a2e;
|
||||
--muted: #6b7280;
|
||||
--soft: #f8fafc;
|
||||
--border: #cbd5e1;
|
||||
--hl: #d63384;
|
||||
--lossless: #16a34a;
|
||||
--lossy: #ef4444;
|
||||
}
|
||||
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: 26px; font-size: 1.05rem; }
|
||||
.sub strong { color: var(--dark); }
|
||||
|
||||
.compare {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 22px;
|
||||
max-width: 1180px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.col {
|
||||
border: 2px solid;
|
||||
border-radius: 12px;
|
||||
padding: 18px 22px;
|
||||
background: #fff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
}
|
||||
.col.lossless { border-color: var(--lossless); }
|
||||
.col.lossy { border-color: var(--lossy); }
|
||||
|
||||
.col-head { display: flex; justify-content: space-between; align-items: baseline; }
|
||||
.col-name { font-size: 1.4rem; font-weight: 700; }
|
||||
.col.lossless .col-name { color: var(--lossless); }
|
||||
.col.lossy .col-name { color: var(--lossy); }
|
||||
.col-tag {
|
||||
font-size: 0.72rem;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.12em;
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
.row { display: grid; grid-template-columns: 120px 1fr; gap: 10px 14px; }
|
||||
.row-key {
|
||||
font-size: 0.72rem;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
color: var(--muted);
|
||||
padding-top: 3px;
|
||||
}
|
||||
.row-val { font-size: 0.92rem; line-height: 1.5; color: var(--dark); }
|
||||
.row-val strong {
|
||||
font-family: ui-monospace, monospace;
|
||||
background: var(--soft);
|
||||
padding: 1px 6px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.matrix {
|
||||
margin-top: 22px;
|
||||
max-width: 1180px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
background: var(--soft);
|
||||
border: 1.5px solid var(--border);
|
||||
border-radius: 10px;
|
||||
padding: 14px 22px;
|
||||
}
|
||||
.matrix-head {
|
||||
font-size: 0.78rem;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.1em;
|
||||
color: var(--muted);
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.matrix-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1fr 1fr;
|
||||
gap: 8px 16px;
|
||||
font-size: 0.88rem;
|
||||
}
|
||||
.matrix-grid .scenario { font-weight: 700; color: var(--dark); }
|
||||
.matrix-grid .answer {
|
||||
font-family: ui-monospace, monospace;
|
||||
color: var(--dark);
|
||||
}
|
||||
.matrix-grid .answer.lossless { color: var(--lossless); font-weight: 700; }
|
||||
.matrix-grid .answer.lossy { color: var(--lossy); font-weight: 700; }
|
||||
|
||||
.verdict {
|
||||
margin-top: 18px;
|
||||
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>Was wir über Kompression gelernt haben</h1>
|
||||
<div class="sub">Zwei fundamental verschiedene Wege, dasselbe Ziel: <strong>Daten kleiner machen.</strong></div>
|
||||
|
||||
<div class="compare">
|
||||
|
||||
<div class="col lossless">
|
||||
<div class="col-head">
|
||||
<span class="col-name">Verlustfrei</span>
|
||||
<span class="col-tag">Lossless</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-key">Was passiert</div>
|
||||
<div class="row-val">Redundanz raus — Wiederholungen kürzer schreiben</div>
|
||||
<div class="row-key">Umkehrbar</div>
|
||||
<div class="row-val">Ja. Aus der komprimierten Datei wird das <strong>exakte</strong> Original wieder.</div>
|
||||
<div class="row-key">Verfahren</div>
|
||||
<div class="row-val">RLE, Huffman, Deflate, LZ77/LZ78</div>
|
||||
<div class="row-key">Formate</div>
|
||||
<div class="row-val">ZIP · PNG · FLAC · TIFF · RAW</div>
|
||||
<div class="row-key">Faktor</div>
|
||||
<div class="row-val">2× – 5× (typisch)</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col lossy">
|
||||
<div class="col-head">
|
||||
<span class="col-name">Verlustbehaftet</span>
|
||||
<span class="col-tag">Lossy</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row-key">Was passiert</div>
|
||||
<div class="row-val">Irrelevanz raus — was Mensch nicht wahrnimmt, wird weggeworfen</div>
|
||||
<div class="row-key">Umkehrbar</div>
|
||||
<div class="row-val">Nein. Einmal weg, für immer weg.</div>
|
||||
<div class="row-key">Trick</div>
|
||||
<div class="row-val">Psychoakustik (MP3) · Psychovisualität (JPEG)</div>
|
||||
<div class="row-key">Formate</div>
|
||||
<div class="row-val">MP3 · AAC · JPEG · WebP · H.264 · H.265</div>
|
||||
<div class="row-key">Faktor</div>
|
||||
<div class="row-val">10× – 100× (typisch)</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="matrix">
|
||||
<div class="matrix-head">Entscheidungsmatrix — wann nehme ich welches?</div>
|
||||
<div class="matrix-grid">
|
||||
<div class="scenario">Foto-Archiv (RAW)</div>
|
||||
<div class="answer lossless">Lossless</div>
|
||||
<div class="scenario">Spotify-Stream</div>
|
||||
<div class="answer lossy">Lossy</div>
|
||||
|
||||
<div class="scenario">Code-Repository</div>
|
||||
<div class="answer lossless">Lossless (ZIP)</div>
|
||||
<div class="scenario">Instagram-Foto</div>
|
||||
<div class="answer lossy">Lossy (JPEG)</div>
|
||||
|
||||
<div class="scenario">Studio-Master-Track</div>
|
||||
<div class="answer lossless">Lossless (FLAC)</div>
|
||||
<div class="scenario">YouTube-Video</div>
|
||||
<div class="answer lossy">Lossy (H.264)</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="verdict">
|
||||
<div class="verdict-q">Lossless für Archiv und Code. Lossy für Streaming und Anzeige.</div>
|
||||
<div class="verdict-a">Faustregel: <strong>Werkzeug</strong> (du arbeitest noch dran) → Lossless. <strong>Konsum</strong> (du schaust/hörst nur) → Lossy.</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user