{"id":2197,"date":"2026-03-23T20:42:28","date_gmt":"2026-03-23T19:42:28","guid":{"rendered":"https:\/\/nodanoma.com\/?p=2197"},"modified":"2026-03-27T16:09:33","modified_gmt":"2026-03-27T15:09:33","slug":"darkroom-tools","status":"publish","type":"post","link":"https:\/\/nodanoma.com\/de\/fotografie\/darkroom-tools\/","title":{"rendered":"Werkzeuge f\u00fcr die Dunkelkammer"},"content":{"rendered":"\n<p>Hier biete ich mathematische Werkzeuge oder Tabellen an, die die Arbeit in der Dunkelkammer beschleunigen k\u00f6nnen.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nodanoma.com\/de\/fotografie\/darkroom-tools\/#Blendenstufenrechner\" >Blendenstufenrechner<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nodanoma.com\/de\/fotografie\/darkroom-tools\/#fStop_Blendenrechner\" >f\/Stop Blendenrechner<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nodanoma.com\/de\/fotografie\/darkroom-tools\/#Belichtungszeittransposition\" >Belichtungszeittransposition<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nodanoma.com\/de\/fotografie\/darkroom-tools\/#Belichtungszeit_Transpositionsrechner\" >Belichtungszeit Transpositionsrechner<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Blendenstufenrechner\"><\/span>Blendenstufenrechner<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>In der Dunkelkammer kann Bedarf an exakten und zuverl\u00e4ssigen Belichtungszeiten bestehen, um beispieslweise aktuelle zeiten aufgrund von Gradatations\u00e4nderungen anzupassen. Hier ist ein simpler Rechner, der Belichtungszeiten nach Blendenstufen ausspuckt \u2014&nbsp;ich empfehle grunds\u00e4tzlich <em>ausschlie\u00dflich<\/em> in Blendenstufen zu denken, da Licht sich logarithmisch und nicht linear verh\u00e4lt. Die Faustregel ist: Je l\u00e4nger du belichtest, desto mehr musst du verl\u00e4ngern. Dies kann unter Umst\u00e4nden auch f\u00fcr das Anlegen von Graustufenlinealen dienlich sein.<\/p>\n\n\n\n<div style=\"max-width:100%; width:100%; padding:30px; border:1px solid #ccc; border-radius:8px; box-sizing:border-box;\">\n  <h3><span class=\"ez-toc-section\" id=\"fStop_Blendenrechner\"><\/span>f\/Stop Blendenrechner<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n  <div style=\"display:flex; gap:20px; flex-wrap:wrap; margin:15px 0;\">\n    <div style=\"flex:1; min-width:200px;\">\n      <label>Startwert <span style=\"color:#666; font-size:0.9em;\">(in Sekunden)<\/span>:\n        <input type=\"number\" step=\"0.1\" min=\"0\" id=\"inputZahl\" placeholder=\"z.B. 8\"\n          style=\"width:100%; padding:8px; box-sizing:border-box;\"><\/label>\n    <\/div>\n\n    <div style=\"flex:1; min-width:200px;\">\n      <label>Stufen:\n        <select id=\"stufen\" style=\"width:100%; padding:8px; box-sizing:border-box;\">\n          <option value=\"12\">1\/12<\/option>\n          <option value=\"8\">1\/8<\/option>\n          <option value=\"6\">1\/6<\/option>\n          <option value=\"4\">1\/4<\/option>\n          <option value=\"3\" selected>1\/3<\/option>\n          <option value=\"2\">1\/2<\/option>\n          <option value=\"1\">ganz<\/option>\n        <\/select>\n      <\/label>\n    <\/div>\n  <\/div>\n\n  <div style=\"display:flex; gap:20px; flex-wrap:wrap; margin:15px 0;\">\n    <div style=\"flex:1; min-width:200px;\">\n      <label>Umfang <span style=\"color:#666; font-size:0.9em;\">(volle Blenden)<\/span>:\n        <input type=\"number\" min=\"1\" id=\"range\" value=\"2\" style=\"width:100%; padding:8px; box-sizing:border-box;\">\n      <\/label>\n    <\/div>\n\n    <div style=\"flex:1; min-width:200px;\">\n      <label>Nachkommastellen: <input type=\"number\" min=\"0\" id=\"fixed\" value=\"1\"\n          style=\"width:100%; padding:8px; box-sizing:border-box;\"><\/label>\n    <\/div>\n  <\/div>\n\n  <div style=\"display:flex; gap:20px; flex-wrap:wrap; margin:15px 0;\">\n    <div style=\"flex:1; min-width:200px;\">\n      <label>Richtung:\n        <select id=\"direction\" style=\"width:100%; padding:8px; box-sizing:border-box;\">\n          <option value=\"0\">Symmetrisch<\/option>\n          <option value=\"1\">Vorw\u00e4rts<\/option>\n          <option value=\"-1\">R\u00fcckw\u00e4rts<\/option>\n        <\/select>\n      <\/label>\n    <\/div>\n\n    <div style=\"flex:1; min-width:200px;\">\n      <label>Feldtrenner: <input id=\"separator\"  placeholder=\"z.B. | oder , \"\n        style=\"width:100%; padding:8px; box-sizing:border-box;\"\n          placeholder=\"\"><\/label>\n\n    <\/div>\n  <\/div>\n<\/div>\n\n<button onclick=\"f_stop()\"\n  style=\"width:100%; padding:12px; background:#5e817a; color:white; border:none; border-radius:6px; font-size:16px; cursor:pointer;\">Berechnen<\/button>\n<p style=\"margin-top:15px;\"><strong>Belichtungszeiten (in Sekunden):<\/strong> <span id=\"blendenstufen\"\n    style=\"font-family:monospace; background:#f5f5f5; padding:8px; display:block; min-height:20px;\">&#8212;<\/span><\/p>\n\n<!-- NEUE ERGEBNIS-BOX F\u00dcR DIFFERENZEN -->\n<p><strong>Belichtungsintervalle (in Sekunden):<\/strong>\n  <span id=\"differenzen\"\n    style=\"font-family:monospace; background:#fff3cd; padding:8px; display:block; min-height:20px; color:#856404;\">&#8212;<\/span>\n<\/p>\n\n  <\/div>\n\n<style>\n  .full-stop {\n    font-weight: bold !important;\n    font-size: 1.2em !important;\n    color: #437b71 !important;\n    \/* T\u00fcrkis *\/\n    background: #e1f5fe !important;\n    padding: 2px 4px !important;\n    border-radius: 4px !important;\n    border: 1px solid #437b71 !important;\n  }\n<\/style>\n\n<script>\n  function f_stop() {\n    let root = parseFloat(document.getElementById('inputZahl').value);\n    let stop = parseFloat(document.getElementById('stufen').value);\n    let range = parseFloat(document.getElementById('range').value) || 2;\n    let fixed = parseInt(document.getElementById('fixed').value) || 1;\n    let dir = parseInt(document.getElementById('direction').value) || 0;\n    let separator = document.getElementById('separator').value || '|';\n\n    if (isNaN(root) || root < 0) {\n      document.getElementById('blendenstufen').innerHTML = 'Please enter a valid start value';\n      return;\n    }\n\n    let stops = [];\n    range *= stop;\n    let current = root;\n    let fulls = []\n\n    \/\/ **DEINE KOMPLETTE URSPR\u00dcNGLICHE LOGIK**\n    if (!dir) {  \/\/ Symmetrisch\n      stops = new Array((range * 2) + 1);\n      fulls = new Array((range * 2) + 1);\n      stops[range] = root;\n      fulls[range] = true\n      for (let r = 1; r <= range; r++) {\n        fulls[range + r] = (r % stop == 0)\n        current *= Math.pow(2, 1 \/ stop);\n        stops[range + r] = current;\n      }\n      current = root;\n      for (let r = 1; r <= range; r++) {\n        fulls[range - r] = (r % stop == 0)\n        current *= Math.pow(2, -1 \/ stop);\n        stops[range - r] = current;\n      }\n    } else {  \/\/ Vor-\/R\u00fcckw\u00e4rts\n      stops = new Array(range + 1);\n      fulls = new Array(range + 1);\n      if (dir > 0) {\n        stops[0] = current;\n        fulls[0] = true;\n        for (let r = 1; r <= range; r++) {\n          fulls[r] = (r % stop == 0)\n          current *= Math.pow(2, 1 \/ stop);\n          stops[r] = current;\n        }\n      } else if (dir < 0) {\n        stops[range] = current;\n        fulls[range] = true;\n        for (let r = 1; r <= range; r++) {\n          fulls[range - r] = (r % stop == 0)\n          current *= Math.pow(2, -1 \/ stop);\n          stops[range - r] = current;\n        }\n      }\n    }\n\n    \/\/ **Hervorhebung: GANZZAHLIGE = volle Blendenstufen**\n    let stop_times = stops.map((s, i) => {\n      let value = parseFloat(s);\n      let fix = value.toFixed(fixed);\n      let displayValue = (fix % 1 === 0) ? value.toFixed(0) : fix;\n\n      if (fulls[i]) {\n        return `<span class=\"full-stop\">${displayValue}<\/span>`;\n      }\n      return displayValue;\n    });\n\n    let diffs = [stop_times[0]];\n    for (let j = 1; j < stops.length; j++) {\n      let diff = stops[j] - stops[j - 1]\n      diff = fulls[j]\n        ? `<span class=\"full-stop\">${diff.toFixed(fixed)}<\/span>`\n        : diff.toFixed(fixed)\n      diffs.push(diff)\n    }\n\n    \/\/ let diff_display = diffs.length > 0 ? diffs.join(' ' + separator + ' ') : 'Keine vollen Stops zum Vergleichen';\n\n    if (!separator) separator = ' ';\n    document.getElementById('blendenstufen').innerHTML = stop_times.join(' ' + separator + ' ');\n    document.getElementById('differenzen').innerHTML = diffs.join(' ' + separator + ' ');\n  }\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Belichtungszeittransposition\"><\/span>Belichtungszeittransposition<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Wenn Belichtungszeiten f\u00fcr Gesamtbelichtung, Multigradefilterung oder Abwedeln insgesamt verl\u00e4ngert werden, weil beispielsweise ein gr\u00f6\u00dferer Print angefertigt wird oder schw\u00e4cheres papier zum Einsatz kommt, ist es hilfreich, die bisherigen Zeiten proportional zu transponieren. Hierf\u00fcr k\u00f6nnen in folgendem Modul bis zu vier Belichtungszeiten eingegeben werden und an eine neue Gesamtbelichtungszeit angepasst:<\/p>\n\n\n\n<div style=\"max-width:100%; width:100%; padding:30px; border:1px solid #ccc; border-radius:8px; box-sizing:border-box;\">\n  <h3><span class=\"ez-toc-section\" id=\"Belichtungszeit_Transpositionsrechner\"><\/span>Belichtungszeit Transpositionsrechner<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n  <div style=\"display:flex; flex-direction:column; gap:10px; margin:15px 0; max-width:300px;\">\n    <label>Zeit 1 (alte Referenz):\n      <input type=\"number\" step=\"0.01\" min=\"0.01\" id=\"zeit1\" placeholder=\"z.B. 16.0\"\n        style=\"width:100%; padding:8px; box-sizing:border-box;\">\n    <\/label>\n\n    <label>Zeit 2:\n      <input type=\"number\" step=\"0.01\" min=\"0.01\" id=\"zeit2\" placeholder=\"z.B. 4.7\"\n        style=\"width:100%; padding:8px; box-sizing:border-box;\">\n    <\/label>\n\n    <label>Zeit 3:\n      <input type=\"number\" step=\"0.01\" min=\"0.01\" id=\"zeit3\" placeholder=\"z.B. 8\"\n        style=\"width:100%; padding:8px; box-sizing:border-box;\">\n    <\/label>\n\n    <label>Zeit 4:\n      <input type=\"number\" step=\"0.01\" min=\"0.01\" id=\"zeit4\" placeholder=\"z.B. 2\"\n        style=\"width:100%; padding:8px; box-sizing:border-box;\">\n    <\/label>\n  <\/div>\n\n  <div style=\"display:flex; gap:20px; flex-wrap:wrap; margin:15px 0;\">\n    <div style=\"flex:1; min-width:200px;\">\n      <label>Neue Zeit 1:\n        <input type=\"number\" step=\"0.01\" min=\"0.01\" id=\"neueZeit1\" placeholder=\"z.B. 8.0\"\n          style=\"width:100%; padding:8px; box-sizing:border-box;\">\n      <\/label>\n    <\/div>\n\n    <div style=\"flex:1; min-width:200px;\">\n      <label>Feldtrenner:\n        <input id=\"separator\" value=\"|\" placeholder=\", oder |\"\n          style=\"width:100%; padding:8px; box-sizing:border-box;\">\n      <\/label>\n    <\/div>\n  <\/div>\n\n  <button onclick=\"transposeTimes()\"\n    style=\"width:100%; padding:12px; background:#007cba; color:white; border:none; border-radius:6px; font-size:16px; cursor:pointer;\">\n    Zeiten transponieren\n  <\/button>\n\n  <p style=\"margin-top:15px;\">\n    <strong>Neue Belichtungszeiten:<\/strong>\n    <span id=\"transposed\"\n      style=\"font-family:monospace; background:#f5f5f5; padding:8px; display:block; min-height:20px;\">&#8212;<\/span>\n  <\/p>\n<\/div>\n\n<script>\n  function transposeTimes() {\n    \/\/ Alle Eingaben lesen\n    let alteZeit1 = parseFloat(document.getElementById('zeit1').value);\n    let neueZeit1 = parseFloat(document.getElementById('neueZeit1').value);\n    let zeit2 = parseFloat(document.getElementById('zeit2').value);\n    let zeit3 = parseFloat(document.getElementById('zeit3').value);\n    let zeit4 = parseFloat(document.getElementById('zeit4').value);\n    let separator = document.getElementById('separator').value || ' | ';\n\n    \/\/ Validierung: Mindestens alteZeit1 + neueZeit1 m\u00fcssen vorhanden sein\n    if (isNaN(alteZeit1) || alteZeit1 <= 0 || isNaN(neueZeit1) || neueZeit1 <= 0) {\n      document.getElementById('transposed').innerHTML = 'Bitte g\u00fcltige Referenzzeiten eingeben';\n      return;\n    }\n\n    \/\/ **PROPORTIONALER FAKTOR**: neueZeit1 \/ alteZeit1\n    let faktor = neueZeit1 \/ alteZeit1;\n\n    \/\/ Alle neuen Zeiten berechnen\n    let neueZeiten = [\n      neueZeit1,  \/\/ Zeit 1 = direkt eingegeben\n      zeit2 > 0 ? (zeit2 * faktor).toFixed(2) : null,\n      zeit3 > 0 ? (zeit3 * faktor).toFixed(2) : null,\n      zeit4 > 0 ? (zeit4 * faktor).toFixed(2) : null\n    ];\n\n    \/\/ Nur g\u00fcltige Zeiten anzeigen\n    let result = neueZeiten.filter(Boolean);\n    if (!separator.length) separator = \" \"\n    document.getElementById('transposed').innerHTML = result.join(' '+separator+' ');\n  }\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Hier biete ich mathematische Werkzeuge oder Tabellen an, die die Arbeit in der Dunkelkammer beschleunigen k\u00f6nnen. Blendenstufenrechner In der Dunkelkammer kann Bedarf an exakten und zuverl\u00e4ssigen Belichtungszeiten bestehen, um beispieslweise aktuelle zeiten aufgrund von Gradatations\u00e4nderungen anzupassen. Hier ist ein simpler Rechner, der Belichtungszeiten nach Blendenstufen &hellip; <a href=\"https:\/\/nodanoma.com\/de\/fotografie\/darkroom-tools\/\" class=\"more-link\"><span>Continue reading<span class=\"screen-reader-text\">Werkzeuge f\u00fcr die Dunkelkammer<\/span><\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1853,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,27],"tags":[26],"class_list":["post-2197","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fotografie","category-darkroom","tag-darkroom"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"de","enabled_languages":["en","de"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false}}},"_links":{"self":[{"href":"https:\/\/nodanoma.com\/de\/wp-json\/wp\/v2\/posts\/2197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nodanoma.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nodanoma.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nodanoma.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nodanoma.com\/de\/wp-json\/wp\/v2\/comments?post=2197"}],"version-history":[{"count":13,"href":"https:\/\/nodanoma.com\/de\/wp-json\/wp\/v2\/posts\/2197\/revisions"}],"predecessor-version":[{"id":2217,"href":"https:\/\/nodanoma.com\/de\/wp-json\/wp\/v2\/posts\/2197\/revisions\/2217"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nodanoma.com\/de\/wp-json\/wp\/v2\/media\/1853"}],"wp:attachment":[{"href":"https:\/\/nodanoma.com\/de\/wp-json\/wp\/v2\/media?parent=2197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nodanoma.com\/de\/wp-json\/wp\/v2\/categories?post=2197"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nodanoma.com\/de\/wp-json\/wp\/v2\/tags?post=2197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}