{"id":1118,"date":"2017-08-01T08:35:29","date_gmt":"2017-08-01T06:35:29","guid":{"rendered":"http:\/\/blog.systemconnect.dk\/?p=1118"},"modified":"2017-05-26T12:50:25","modified_gmt":"2017-05-26T10:50:25","slug":"billedramme-med-roterende-fis-i-kasketten","status":"publish","type":"post","link":"https:\/\/scblog.lynge.org\/?p=1118","title":{"rendered":"Billedramme med roterende fis i kasketten"},"content":{"rendered":"<p>S\u00e5 er sommerferien vel vel-overst\u00e5et og hvad er s\u00e5 mere irriterende end at\u00a0dine sommerferiebilleder i jpeg-format\u00a0vender\u00a0forkert p\u00e5 din billedramme ift. hvordan der ser ud p\u00e5 dit kamera eller i Windows?<\/p>\n<p>Det er\u00a0da lige til at f\u00e5 en op i det r\u00f8de felt efter en god afslappende sommerferie!<\/p>\n<p>Jeg syntes i hvert fald at det er SMADDER irriterende og skyldes at (billige?) billedrammer ikke kan finde ud af at rotere billeder ud fra den EXIF attributterne, mens moderne Windows snilt kan (det er det der sker n\u00e5r du h\u00f8jreklikker p\u00e5 en jpeg-fil og beder windows rotere den med eller mod uret). I bund og grund sikkert fordi de ikke lige har CPU nok\u00a0til at rotere billedet on-the-fly.<\/p>\n<p>Det mest hammer irriterende er at man f\u00f8rst opdager det n\u00e5r man har kopieret billedet til billedrammen &#8211; og lige spotter det &#8211; og hvad er det s\u00e5 lige det billede hedder, der vender forkert?<\/p>\n<p>&nbsp;<\/p>\n<p>Derfor fra alle mig til alle jer en lille sommerhilsen der ellers ikke har noget at g\u00f8re med denne blogs normale indhold, en powershell l\u00f8sning p\u00e5 problemet:<br \/>\nF\u00f8lgende script indeholder funktioner der afl\u00e6ser EXIF attributten og derefter rent faktisk roterer billedet p\u00e5 PCen hvis det er n\u00f8dvendigt (s\u00e5 skal din biledramme ikke bekymre sig om det n\u00e5r den nu alligevel ikke vil).<br \/>\n&#8230;og s\u00e5 en funktion der lige gennems\u00f8ger alle billeder i et katalog &#8211; inkl. underkataloger &#8211; og behandler dem. Dvs. du kan blot s\u00e6tte scriptet til at behandle alle billederne p\u00e5 dit SD-kort (eller hvor du nu har din billedrammes billeder). I eksemplet nederst hedder SD-kortet D:<\/p>\n<pre># 20170526 GSL - SystemConnect. Source: http:\/\/blog.systemconnect.dk\r\n#\r\n[System.Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\")\r\n\r\nfunction Get-EXIFRotationAttribute($FilePath) {\r\n# Returns:\r\n# 1 = \"Horizontal\"\r\n# 3 = \"Rotate 180 degrees\"\r\n# 6 = \"Rotate 90 degrees clockwise\"\r\n# 8 = \"Rotate 270 degrees clockwise\"\r\n\u00a0 $WiaImage = New-Object -ComObject Wia.ImageFile\r\n\u00a0 $WiaImage.LoadFile($FilePath)\r\n\u00a0 if($WiaImage.Properties.Exists(\"274\")) {\r\n\u00a0\u00a0\u00a0 return ($WiaImage.Properties.Item(\"274\").Value)\r\n\u00a0 }\r\n\u00a0 return -1\r\n}\r\n\r\nfunction RotateClockwise-JpegImage($Degrees,$FilePath) {\r\n\u00a0 $Image = [System.Drawing.image]::FromFile( $FilePath )\r\n\u00a0 switch($Degrees) {\r\n\u00a0\u00a0\u00a0 90\u00a0 { $Image.rotateflip(\"Rotate90FlipNone\") }\r\n\u00a0\u00a0\u00a0 180 { $Image.rotateflip(\"Rotate180FlipNone\") }\r\n\u00a0\u00a0\u00a0 270 { $Image.rotateflip(\"Rotate270FlipNone\") }\r\n\u00a0 }\r\n\u00a0 $Image.save($FilePath)\r\n\u00a0 Write-Host -ForegroundColor Yellow \"File $FilePath rotated $Degrees degrees clockwise\"\r\n}\r\n\r\nfunction Rotate-JpegImages($ImagePath) {\r\n\u00a0 write-host \"Checking for jpg\/jpeg images that needs rotation in path $ImagePath (including subdirectories)...\"\r\n\u00a0 $JpegFiles = get-childitem -Recurse -Path \"$ImagePath\\*\" -File -Include @(\"*.jpg\",\"*.jpeg\")\r\n\u00a0 ForEach($JpegFile IN $JpegFiles) {\r\n\u00a0\u00a0\u00a0 $FilePath = Join-Path -Path $ImagePath -ChildPath $JpegFile.Name\r\n\u00a0\u00a0\u00a0 $EXIFRotationAttribute = Get-EXIFRotationAttribute $FilePath\r\n\u00a0\u00a0\u00a0 switch($EXIFRotationAttribute) {\r\n\u00a0\u00a0\u00a0 6 { RotateClockwise-JpegImage 90 $FilePath }\r\n\u00a0\u00a0\u00a0 3 { RotateClockwise-JpegImage 180 $FilePath }\r\n\u00a0\u00a0\u00a0 8 { RotateClockwise-JpegImage 270 $FilePath }\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0 }\r\n}\r\n\r\n# Rotate all images on D: (including subdirectories)\r\n\r\nRotate-JpegImages \"D:\"<\/pre>\n<div>Dermed skulle problemet v\u00e6re l\u00f8st en gang for alle. God forn\u00f8jelse \ud83d\ude42<\/div>\n","protected":false},"excerpt":{"rendered":"<p>S\u00e5 er sommerferien vel vel-overst\u00e5et og hvad er s\u00e5 mere irriterende end at\u00a0dine sommerferiebilleder i jpeg-format\u00a0vender\u00a0forkert p\u00e5 din billedramme ift. hvordan der ser ud p\u00e5 dit kamera eller i Windows? Det er\u00a0da lige til at f\u00e5 en op i det &hellip; <a href=\"https:\/\/scblog.lynge.org\/?p=1118\">L\u00e6s resten <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46],"tags":[26,23,62],"class_list":["post-1118","post","type-post","status-publish","format-standard","hentry","category-ikke-c5nav-relaterede-indlaeg","tag-gratis","tag-hint","tag-powershell"],"_links":{"self":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/1118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1118"}],"version-history":[{"count":1,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/1118\/revisions"}],"predecessor-version":[{"id":1119,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/1118\/revisions\/1119"}],"wp:attachment":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}