{"id":18518081,"url":"https://github.com/cyotek/cyotek.quickscan","last_synced_at":"2025-04-09T08:31:24.009Z","repository":{"id":41480361,"uuid":"207628692","full_name":"cyotek/Cyotek.QuickScan","owner":"cyotek","description":"Simple application for scanning images with as few user-interactions as possible.","archived":false,"fork":false,"pushed_at":"2024-03-29T17:45:30.000Z","size":1864,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T03:43:56.323Z","etag":null,"topics":["csharp","hacktoberfest","wia"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cyotek.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-09-10T18:02:26.000Z","updated_at":"2025-01-06T23:09:41.000Z","dependencies_parsed_at":"2024-03-29T18:45:56.216Z","dependency_job_id":"d31660cd-f288-41c7-8fa7-7e45cf966806","html_url":"https://github.com/cyotek/Cyotek.QuickScan","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyotek%2FCyotek.QuickScan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyotek%2FCyotek.QuickScan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyotek%2FCyotek.QuickScan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyotek%2FCyotek.QuickScan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cyotek","download_url":"https://codeload.github.com/cyotek/Cyotek.QuickScan/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248003085,"owners_count":21031723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","hacktoberfest","wia"],"created_at":"2024-11-06T17:11:29.306Z","updated_at":"2025-04-09T08:31:23.547Z","avatar_url":"https://github.com/cyotek.png","language":"C#","funding_links":["https://www.paypal.me/cyotek","https://www.buymeacoffee.com/cyotek"],"categories":[],"sub_categories":[],"readme":"# Cyotek QuickScan\n\n\u003e A simple application that allows for scanning resources from\n\u003e any WIA compatible scanner and automatically saving images. It\n\u003e shines at performing multiple scans without having to show a\n\u003e UI, saving large amounts of time when scanning same-sized\n\u003e items.\n\n![A screenshot of the application in use on Windows 11, 200%\ndisplay scaling][screenshot2]\n\nThe Quick Scan utility does exactly as described - it provides a\n(more) convenient work flow for scanning images from flatbed\nscanners and saving them to disk with as few user interactions\nas possible, with automatic saving and file name generation. It\nespecially shines at chain-scanning multiple images using the\nsame parameters.\n\n## A note when upgrading from version 1.0\n\nThe original version of this application displayed a modal\nconfirmation prompt each time it had finished scanning. This\nused to frustrate me endlessly, as I had a habit of having this\napplication on one monitor and my Quick Catalogue application on\nanother. During scanning I was also adding entries to the\ncatalogue, and the modal prompt would often rip focus away and\nif I was typing out a description and didn't stop fast enough,\ninvariably I'd press `y` or `n` and trigger a button. Version\n1.1 introduces a new \"inline prompt\" option which both resolves\nthis and has additional benefit that the image processing tools\ncan be used when chain scanning. The remainder of this document\nassumes that inline prompting is enabled as this is the new\ndefault. If you want to revert to the old modal message, ensure\n**Inline Prompt** from the **Options** menu is unchecked.\n\nAlso note that due to a change in how the ini file is parsed,\nthe **Output Folder** field will need to be reset.\n\n## Quick Start\n\n1. Select your device from the **Device** group. Only scanners\n   will be listed in this field\n2. Check **Continuous** if you want to scan multiple items -\n   after each scan the application will prompt how to continue\n3. Select an appropriate output format from the Output Settings\n   group. As JPEG is lossy and GIF limited, neither of these\n   formats are recommended - I stick with TIFF, although this\n   has significant overhead with file size.\n4. (Optional) If using JPEG as the output, set the **Quality**\n   as appropriate. Larger values equate to larger file sizes,\n   although JPG files should still be smaller than PNG\n5. Set the output **Folder**\n6. (Optional) Set the base **File name** (without an extension).\n   If you leave this blank, the current date and time will be\n   used\n7. Ensure the **Use Counter** option is set. When this option is\n   used, an incrementing number is automatically appended to\n   output file names\n8. Ensure the **Auto Save** option is set. When this option is\n   used, after an image is scanned, it is automatically saved\n   using the configured output settings, and the counter\n   incremented. If this option isn't set, you can still manually\n   save the image - but this tool is all about reducing the\n   clicks\n9. Click **Scan**, or press _F5_ to initiate the WIA scanning\n   dialogue. When you have defined the attributes of the image\n   to scan, performed the preview and defined the scan size,\n   click **Scan** to scan the image and close the WIA dialogue.\n   I always recommend choosing **Custom Settings** and setting\n   the DPI to the maximum as the default profiles use quite a\n   low value. Note that depending on the image size and DPI,\n   values greater than 600 may result in corrupt images.\n10. After the image has been scanned and saved, the continuation\n   bar will prompt how to progress\n      * Choose **Yes** to repeat the scan using the same\n        parameters (see known issues below). This is the best\n        option when scanning multiple items of the same size and\n        resolution\n      * Choose **Yes, Customise** to re-open the preview\n        dialogue. This is best used when you are doing\n        continuous scanning, but the size of the item being\n        scanned is different to the previous scan\n      * Choose **No** to cancel the scan loop\n11. (Optional) Before choosing an option from the continuation\n    bar, you can use the imaging tools to manipulate the image\n    in basic ways. After performing flip or rotation actions,\n    click **Save** to save the image - this will act the same\n    way as the automatic save, so a new file name will be\n    generated and the counter incremented (if these features are\n    enabled)\n\n## A note for Windows 10 users\n\nI do most of my scanning on Windows 11, but recently when using\nWindows 10, I was irked to find focus kept getting stolen from\nthe application I was entering data into back to Quick Scan\n(which is why I put in the inline feature to begin with!).\nVersion 1.3 introduces a new per-machine \"Show Progress\" option\nthat controls if the progress dialog whilst scanning is\ndisplayed. While this is useful for avoiding having Quick Scan\ntake focus when you're working in another application, it has\nthe following caveats:\n\n1. As far as I know it isn't possible to get the progress\n   programmatically, so there isn't an inline progress bar\n2. In a similar fashion to the above, there isn't a way to\n   cancel a scan either\n\n## Other Features\n\n* Copy - copies the current image to the Windows Clipboard.\n* Paste - pastes an image from the Windows Clipboard which can\n  then be manipulated and saved as if it were any other scan.\n* Maximise Scan Window setting - this experimental setting\n  attempts to maximise the WIA scan dialogue, which may be\n  useful for selecting accurate scan regions as the default\n  preview is very small.\n* Auto Select Custom setting - this experimental setting\n  attempts to set the WIA dialogue to \"Custom Settings\" by\n  default, thus saving a click. I always have to click this\n  button as the other options use pre-defined DPIs that can't be\n  changed.\n\n## Known Issues\n\n* This is only a slight step above an internal tool, so UX may\n  not be great and error handling certainly isn't. Please report\n  any problems so I can continue to improve this tool.\n* ~~If you have multiple scanners, make sure you select the\n  device you want to use first before clicking **Scan**. WIA\n  will always prompt for a device when there is more than one\n  (even if instructed not to!), and if the device you select\n  doesn't match the window selection, subsequent scans will\n  fail. Most of my scanners are USB based and only appear when\n  plugged in, so that part is easy. The scanner on my Brother\n  laser printer always appears regardless of if the printer is\n  switched on or off. As I rarely use this scanner I disable it\n  (but _not_ the printer) in Device Manager to prevent it being\n  seen by WIA.~~ This is fixed in v1.4 I believe.\n* ~~If (as you probably should) you always choose **Custom\n  Settings** from the **Scan** dialogue and you customise those\n  settings so the chosen DPI no longer matches the DPI in the\n  Quick Scan window, subsequent scans will be wrong. At the\n  moment I haven't worked out how to retrieve the parameters\n  used for the scan in order to properly update.~~ This is fixed\n  in 1.4.\n* ~~Related to the above, depending on the scanner, repeating a\n  scan using the same settings may fail. For the CanoScan LiDE\n  110 and 220, I haven't had any issues. With the Plustek\n  OpticSlim 1180 I _always_ have to display the WIA Scan\n  dialogue and reselect all parameters.~~ This should be fixed\n  in 1.4.\n* Rarely, reading WIA properties causes a crash.\n* Sometimes, an image is so large the program crashes trying to\n  save the modified version. When this happens, Quick Scan will\n  instead save the original image from the scanner. This keeps\n  the scan, but means it is saved in the scanners native format\n  (always BMP in my experience), and with no additional features\n  such as EXIF generation or rotation.\n* Some scanners seem very badly behaved (again, rarely have an\n  issue with the CanoScan, but the OpticSlim does this _every\n  time_) and sometimes WIA can't connect to the devices when\n  they are switched on (if they require separate power), or when\n  the OS/scanner resumes from sleep. In this scenario restarting\n  the _Windows Image Acquisition (WIA)_ service seems to be the\n  solution - you can do this from within Quick Scan from the\n  **Tools** menu.\n* If you are scanning large images (above A4 size) at a high DPI\n  (greater than 600) you may end up with \"corrupt\" images where,\n  the bottom of the image is either missing, or is composed of\n  bands from other parts of the image. Not sure if this is a\n  problem with WIA or the scanner driver. As with most of my\n  scanner issues, I get this with the OpticSlim 1180. To resolve\n  I gradually reduce the DPI until I get a \"clean\" image.\n\n## Requirements\n\nPre-built binaries are available from the [releases][ghrel]\npage. These are compiled using .NET 4.8 and therefore require\none of the following operating systems\n\n* Windows 11\n* Windows 10 Anniversary Update (version 1607) (x86 and x64) (or\n  above)\n* Windows 8.1 (x86 and x64)\n* Windows 7 Service Pack 1 (x86 and x64)\n* Windows Server 2016 (version 1709) (or above, e.g. 2019, 2022)\n* Windows Server 2012 R2 (x64)\n* Windows Server 2012 (x64)\n* Windows Server 2008 R2 Service Pack 1 (x64)\n\nIf you wish to compile the [source][ghsrc] yourself, the source\ncode requires .NET Framework 2.0 or above, although it does make\nuse of some third-party dependencies.\n\nAnd of course - a WIA compatible scanner. This application\ndoesn't (yet?) support using the TWAIN interface.\n\n## Tested Scanners and Operating System Combinations\n\n* Brother MFC-L2710DW, Windows 10\n* Brother MFC-L2750DW, Windows 10\n* CanoScan LiDE 100, Windows 10 ([yes, this works perfectly\n  well][scanblog])\n* CanoScan LiDE 100, Windows 11\n* CanoScan LiDE 220, Windows 10\n* CanoScan LiDE 220, Windows 11\n* Plustek OpticSlim 1180, Windows 11 (I don't recommend this\n  scanner unless you need A3 scanning on a budget)\n\n## Background, or why I created this tool\n\n![A older screenshot of the application in use on Windows\n10][screenshot]\n\nFor the past few years, and in a somewhat adhoc fashion, I've\nbeen attempting to catalog the piles of DVDs, music CD's, books,\nmagazines and all sorts of other clutter I have. In addition to\nrecording pertinent details in a database, I've either been\nscanning the front and back of media such as as books or DVDs\n(where they fit in a scanner) and taking digital photographs of\neverything else.\n\nHowever, this sort of scanning is rather tedious and laborious.\nIf I used a program such as Paint.NET or Paint Shop Pro, I'd be\nwasting a large amount of time manually acquiring an image and\nthen saving it, with lots of time spent navigating menus and\ndialogues. I created this tool to simplify the process - if I am\nscanning multiple items of the same size, then I only need to\nspecify the size once, and then just answer a confirmation\nprompt to perform a new scan. Images are automatically saved to\na single folder for me to file later. This has turned out to be\nquite a massive time-saver - even if each item I'm scanning is\nof a different size, I don't need to keep performing the entire\nflow to acquire a new image and then save it.\n\nI have made thousands of scans using this tool, tweaking it over\ntime to add new features such as EXIF meta data and even just\nthe simple act of playing a sound after automatic saves. It has\nworked well for me and I hope it is useful for others.\n\n## Contributing to this code\n\nContributions accepted!\n\n* Found a problem? [Raise an issue][ghissue]\n* Want to improve the code? [Make a pull request][ghpull]\n\nAlternatively, if you make use of this software and it saves you\nsome time, donations are welcome.\n\n[![PayPal Donation][paypalimg]][paypal]\n\n[![By Me a Coffee Donation][bmacimg]][bmac]\n\n## Acknowledgements\n\n* Scanner icon derived from [Computer Hardware Cute Style vol\n  2][1]\n* Some toolbar graphics use [Fugue Icons][2]\n* The chime sound licensed as CC0 is by [Brandon Morris][chime]\n\n## License\n\nThis source is licensed under the MIT license. See `LICENSE.txt`\nfor the full text.\n\n## References\n\n* [Cyotek ImageBox][6] ([GitHub Project][7])\n* [Creating a GroupBox containing an image and a custom display\n  rectangle][3]\n* [Copy an irregular area from a picture to the clipboard in\n  C#][4]\n* [Enabling shell styles for the ListView and TreeView controls\n  in C#][5]\n* [Paste a PNG format image with a transparent background from\n  the clipboard in C#][9]\n* [CanoScan LiDE 100 Windows 10 Compatibility][scanblog]\n* [An introduction to using Windows Image Acquisition (WIA) via\n  C#][wiablog]\n\n[1]: https://www.iconfinder.com/icons/2317747/machine_media_multimedia_office_scan_scanner_scanning_icon\n[2]: https://p.yusukekamiyamane.com/icons/search/fugue/\n[3]: https://www.cyotek.com/blog/creating-a-groupbox-containing-an-image-and-a-custom-display-rectangle\n[4]: http://csharphelper.com/blog/2014/09/copy-an-irregular-area-from-one-picture-to-another-in-c/\n[5]: https://www.cyotek.com/blog/enabling-shell-styles-for-the-listview-and-treeview-controls-in-csharp\n[6]: https://www.cyotek.com/blog/tag/imagebox\n[7]: https://github.com/cyotek/Cyotek.Windows.Forms.ImageBox\n[9]: http://csharphelper.com/blog/2014/09/paste-a-png-format-image-with-a-transparent-background-from-the-clipboard-in-c/\n[scanblog]: https://www.cyotek.com/blog/canoscan-lide-100-windows-10-compatibility\n[wiablog]: https://www.cyotek.com/blog/an-introduction-to-using-windows-image-acquisition-wia-via-csharp\n[chime]: https://opengameart.org/content/completion-sound\n\n[screenshot]: res/screenshot.png\n[screenshot2]: res/screenshot2.png\n\n[ghissue]: https://github.com/cyotek/Cyotek.QuickScan/issues\n[ghpull]: https://github.com/cyotek/Cyotek.QuickScan/pulls\n[ghrel]: https://github.com/cyotek/Cyotek.QuickScan/releases\n[ghsrc]: https://github.com/cyotek/Cyotek.QuickScan\n\n[paypal]: https://www.paypal.me/cyotek\n[paypalimg]: https://static.cyotek.com/assets/images/donate.gif\n[bmac]: https://www.buymeacoffee.com/cyotek\n[bmacimg]: https://static.cyotek.com/assets/images/bmac.png\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyotek%2Fcyotek.quickscan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcyotek%2Fcyotek.quickscan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyotek%2Fcyotek.quickscan/lists"}