{"id":18,"date":"2003-01-01T11:58:07","date_gmt":"2003-01-01T11:58:07","guid":{"rendered":"https:\/\/hostadm.lithium.selfhost.de\/?p=18"},"modified":"2020-09-09T20:02:00","modified_gmt":"2020-09-09T20:02:00","slug":"jpginfo","status":"publish","type":"post","link":"https:\/\/martin-seewaldt.de\/?p=18","title":{"rendered":"JpgInfo"},"content":{"rendered":"<p><b>Gestelltes Problem<\/b><br \/>\nAngenommen, man hat ca. 10.000 Jpeg-Dateien unter denen sich viele Doppelte befinden. Diese Dubletten k\u00f6nnen sich in der Bildgr\u00f6sse, in den Bildproportionen, der Helligkeit und auch der Farbverteilung unterscheiden.<\/p>\n<p><b>Algorithmus<\/b><br \/>\nDas einfachste ist ein Vergleich der Dateigr\u00f6ssen. Damit hab&#8217; ich viele Dubletten gefunden, aber nat\u00fcrlich meine Anforderungen noch nicht erf\u00fcllen k\u00f6nnen. Die eine H\u00e4lfte des Algorithmus ist dadurch aber schon entstanden und zwar ist das eine Sortierung und eine anschliessende Anzeige von Dateien mit gleichem &#8220;Kennwert&#8221;, zun\u00e4chst eben der Dateigr\u00f6sse. Ich habe mir den Quelltext f\u00fcr das Einlesen von Jpeg-Dateien von der &#8220;Independent JPEG Group&#8221; downgeloaded (wenn jemand mal erschreckend guten Quelltext sehen will, da ist er richtig) und somit Zugriff auf die Bilddaten. Zur Einbeziehung des Bildinhaltes werden die Jpeg-Dateien auf eine wahnsinnig schlechte Aufl\u00f6sung heruntergerechnet (8&#215;8 Pixel). Dann werden sie in schwarz-weiss konvertiert, wobei ein Punkt dann schwarz ist, wenn er dunkler ist als die Durchschnittshelligkeit des Originalbildes, ansonsten weiss. Es ergibt sich also eine 64bit-Ganzzahl und nach diesem Wert werden die Bilder sortiert und dann Dateien mit gleichem Kennwert angezeigt. Dann kann der Anwender sich beide Versionen angucken und entscheiden ob die Bilder wirklich identisch sind.<\/p>\n<p><b>Screenshot:<\/b><br \/>\n<img decoding=\"async\" src=\"https:\/\/martin-seewaldt.de\/Programme\/JpgInfo.jpg\" width=\"850\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gestelltes Problem Angenommen, man hat ca. 10.000 Jpeg-Dateien unter denen sich viele Doppelte befinden. Diese Dubletten k\u00f6nnen sich in der Bildgr\u00f6sse, in den Bildproportionen, der Helligkeit und auch der Farbverteilung unterscheiden. Algorithmus Das einfachste ist ein Vergleich der Dateigr\u00f6ssen. Damit hab&#8217; ich viele Dubletten gefunden, aber nat\u00fcrlich meine Anforderungen noch nicht erf\u00fcllen k\u00f6nnen. Die eine [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[3],"tags":[],"class_list":["post-18","post","type-post","status-publish","format-standard","hentry","category-programme_apps"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JpgInfo - Martin Seewaldt<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/martin-seewaldt.de\/?p=18\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JpgInfo - Martin Seewaldt\" \/>\n<meta property=\"og:description\" content=\"Gestelltes Problem Angenommen, man hat ca. 10.000 Jpeg-Dateien unter denen sich viele Doppelte befinden. Diese Dubletten k\u00f6nnen sich in der Bildgr\u00f6sse, in den Bildproportionen, der Helligkeit und auch der Farbverteilung unterscheiden. Algorithmus Das einfachste ist ein Vergleich der Dateigr\u00f6ssen. Damit hab&#8217; ich viele Dubletten gefunden, aber nat\u00fcrlich meine Anforderungen noch nicht erf\u00fcllen k\u00f6nnen. Die eine [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/martin-seewaldt.de\/?p=18\" \/>\n<meta property=\"og:site_name\" content=\"Martin Seewaldt\" \/>\n<meta property=\"article:published_time\" content=\"2003-01-01T11:58:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-09-09T20:02:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/martin-seewaldt.de\/Programme\/JpgInfo.jpg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=18#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=18\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#\\\/schema\\\/person\\\/a1a6571321f54991629bb99be16f5e5f\"},\"headline\":\"JpgInfo\",\"datePublished\":\"2003-01-01T11:58:07+00:00\",\"dateModified\":\"2020-09-09T20:02:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=18\"},\"wordCount\":203,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=18#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/martin-seewaldt.de\\\/Programme\\\/JpgInfo.jpg\",\"articleSection\":[\"Programme\\\/Apps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/martin-seewaldt.de\\\/?p=18#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=18\",\"url\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=18\",\"name\":\"JpgInfo - Martin Seewaldt\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=18#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=18#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/martin-seewaldt.de\\\/Programme\\\/JpgInfo.jpg\",\"datePublished\":\"2003-01-01T11:58:07+00:00\",\"dateModified\":\"2020-09-09T20:02:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#\\\/schema\\\/person\\\/a1a6571321f54991629bb99be16f5e5f\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=18#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/martin-seewaldt.de\\\/?p=18\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=18#primaryimage\",\"url\":\"https:\\\/\\\/martin-seewaldt.de\\\/Programme\\\/JpgInfo.jpg\",\"contentUrl\":\"https:\\\/\\\/martin-seewaldt.de\\\/Programme\\\/JpgInfo.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=18#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/martin-seewaldt.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JpgInfo\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#website\",\"url\":\"https:\\\/\\\/martin-seewaldt.de\\\/\",\"name\":\"Martin Seewaldt\",\"description\":\"Einige meiner Projekte\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/martin-seewaldt.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#\\\/schema\\\/person\\\/a1a6571321f54991629bb99be16f5e5f\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g\",\"caption\":\"admin\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JpgInfo - Martin Seewaldt","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/martin-seewaldt.de\/?p=18","og_locale":"en_US","og_type":"article","og_title":"JpgInfo - Martin Seewaldt","og_description":"Gestelltes Problem Angenommen, man hat ca. 10.000 Jpeg-Dateien unter denen sich viele Doppelte befinden. Diese Dubletten k\u00f6nnen sich in der Bildgr\u00f6sse, in den Bildproportionen, der Helligkeit und auch der Farbverteilung unterscheiden. Algorithmus Das einfachste ist ein Vergleich der Dateigr\u00f6ssen. Damit hab&#8217; ich viele Dubletten gefunden, aber nat\u00fcrlich meine Anforderungen noch nicht erf\u00fcllen k\u00f6nnen. Die eine [&hellip;]","og_url":"https:\/\/martin-seewaldt.de\/?p=18","og_site_name":"Martin Seewaldt","article_published_time":"2003-01-01T11:58:07+00:00","article_modified_time":"2020-09-09T20:02:00+00:00","og_image":[{"url":"https:\/\/martin-seewaldt.de\/Programme\/JpgInfo.jpg","type":"","width":"","height":""}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/martin-seewaldt.de\/?p=18#article","isPartOf":{"@id":"https:\/\/martin-seewaldt.de\/?p=18"},"author":{"name":"admin","@id":"https:\/\/martin-seewaldt.de\/#\/schema\/person\/a1a6571321f54991629bb99be16f5e5f"},"headline":"JpgInfo","datePublished":"2003-01-01T11:58:07+00:00","dateModified":"2020-09-09T20:02:00+00:00","mainEntityOfPage":{"@id":"https:\/\/martin-seewaldt.de\/?p=18"},"wordCount":203,"commentCount":0,"image":{"@id":"https:\/\/martin-seewaldt.de\/?p=18#primaryimage"},"thumbnailUrl":"https:\/\/martin-seewaldt.de\/Programme\/JpgInfo.jpg","articleSection":["Programme\/Apps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/martin-seewaldt.de\/?p=18#respond"]}]},{"@type":"WebPage","@id":"https:\/\/martin-seewaldt.de\/?p=18","url":"https:\/\/martin-seewaldt.de\/?p=18","name":"JpgInfo - Martin Seewaldt","isPartOf":{"@id":"https:\/\/martin-seewaldt.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/martin-seewaldt.de\/?p=18#primaryimage"},"image":{"@id":"https:\/\/martin-seewaldt.de\/?p=18#primaryimage"},"thumbnailUrl":"https:\/\/martin-seewaldt.de\/Programme\/JpgInfo.jpg","datePublished":"2003-01-01T11:58:07+00:00","dateModified":"2020-09-09T20:02:00+00:00","author":{"@id":"https:\/\/martin-seewaldt.de\/#\/schema\/person\/a1a6571321f54991629bb99be16f5e5f"},"breadcrumb":{"@id":"https:\/\/martin-seewaldt.de\/?p=18#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/martin-seewaldt.de\/?p=18"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/martin-seewaldt.de\/?p=18#primaryimage","url":"https:\/\/martin-seewaldt.de\/Programme\/JpgInfo.jpg","contentUrl":"https:\/\/martin-seewaldt.de\/Programme\/JpgInfo.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/martin-seewaldt.de\/?p=18#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/martin-seewaldt.de\/"},{"@type":"ListItem","position":2,"name":"JpgInfo"}]},{"@type":"WebSite","@id":"https:\/\/martin-seewaldt.de\/#website","url":"https:\/\/martin-seewaldt.de\/","name":"Martin Seewaldt","description":"Einige meiner Projekte","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/martin-seewaldt.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/martin-seewaldt.de\/#\/schema\/person\/a1a6571321f54991629bb99be16f5e5f","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g","caption":"admin"}}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/posts\/18","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=18"}],"version-history":[{"count":3,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/posts\/18\/revisions"}],"predecessor-version":[{"id":496,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/posts\/18\/revisions\/496"}],"wp:attachment":[{"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=18"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=18"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=18"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}