aboutsummaryrefslogtreecommitdiff
path: root/README.rst
diff options
context:
space:
mode:
Diffstat (limited to 'README.rst')
-rw-r--r--README.rst154
1 files changed, 154 insertions, 0 deletions
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..c937116
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,154 @@
+Gerbolyze high-resolution image-to-PCB converter
+================================================
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/sample1.jpg
+
+Tooling for PCB art is quite limited in both open source and closed source ecosystems. Something as simple as putting a
+pretty picture on a PCB can be an extremely tedious task. Depending on the PCB tool used, various arcane incantations
+may be necessary and even modestly complex images will slow down most PCB tools to a crawl.
+
+Gerbolyze solves this problem in a toolchain-agnostic way by directly vectorizing bitmap files onto existing gerber
+layers. Gerbolyze has been tested against both the leading open-source KiCAD toolchain and the industry-standard Altium
+Designer. Gerbolyze is written with performance in mind and will happily vectorize tens of thousands of primitives,
+generating tens of megabytes of gerber code without crapping itself. With gerbolyze you can finally be confident that
+your PCB fab's toolchain will fall over before yours does if you overdo it with the high-poly anime silkscreen.
+
+.. contents::
+
+Produce high-quality artistic PCBs in three easy steps!
+-------------------------------------------------------
+
+Gerbolyze works in three steps.
+
+1. Generate a scale-accurate preview of the finished PCB from your CAD tool's gerber output:
+
+ .. code::
+
+ $ gerbolyze render top my_gerber_dir preview.png
+
+2. Load the resulting preview image into the GIMP or another image editing program. Use it as a guide to position scale
+ your artwork. Create a black-and-white image from your scaled artwork using GIMP's newsprint filter. Make sure most
+ details are larger than about 10px to ensure manufacturing goes smooth.
+
+3. Vectorize the resulting grayscale image drectly into the PCB's gerber files:
+
+ .. code::
+
+ $ gerbolyze vectorize top input_gerber_dir output_gerber_dir black_and_white_artwork.png
+
+Image preprocessing guide
+-------------------------
+
+Nice black-and-white images can be generated from any grayscale image using the GIMP's newsprint filter. The
+straight-forward pre-processing steps necessary for use by ``gerbolyze vectorize`` are as follows.
+
+1 Import a render of the board generated using ``gerbolyze render``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+``gerbolyze render`` will automatically scale the render such that ten pixels in the render correspond to 6mil on the
+board, which is about the smallest detail most manufacturers can resolve on the silkscreen layer. You can control this
+setting using the ``--fab-resolution`` and ``--oversampling`` options. Refer to ``gerbolyze --help`` for details.
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/01import01.png
+
+2 Import your desired artwork
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Though anime or manga pictures are highly recommended, you can use any image including photographs. Be careful to select
+a picture with comparatively low detail that remains recognizable at very low resolution. While working on a screen this
+is hard to vizualize, but the grain resulting from the low resolution of a PCB's silkscreen is quite coarse.
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/02import02.png
+
+3 Paste the artwork onto the render as a new layer
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/03paste.png
+
+4 Scale, rotate and position the artwork to the desired size
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/04scale_cut.png
+
+For alignment it may help to set the artwork layer's mode in the layers dialog to ``overlay``, which makes the PCB
+render layer below shine through more. If you can't set the layer's mode, make sure you have actually made a new layer
+from the floating selection you get when pasting one image into another in the GIMP.
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/05position.png
+
+5 Convert the image to grayscale
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/06grayscale.png
+
+6 Fine-tune the image's contrast
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To look well on the PCB, contrast is critical. If your source image is in color, you may have lost some contrast during
+grayscale conversion. Now is the time to retouch that using the GIMP's color curve tool.
+
+When using the GIMP's newsprint filter, bright grays close to white and dark grays close to black will cause very small
+dots that might be beyond your PCB manufacturer's maximum resolution. To control this case, add small steps at the ends
+of the grayscale value curve as shown (exaggerated) in the picture below. These steps saturate very bright grays to
+white and very dark grays to black while preserving the values in the middle.
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/08curve_cut.png
+
+7 Retouch details
+~~~~~~~~~~~~~~~~~
+
+Therer might be small details that don't look right yet, such as the image's background color or small highlights that
+merge into the background now. You can manually change the color of any detail now using the GIMP's flood-fill tool.
+
+If you don't want the image's background to show up on the final PCB at all, just make it black.
+
+Particularly on low-resolution source images it may make sense to apply a blur with a radius similar to the following
+newsprint filter's cell size (10px) to smooth out the dot pattern generated by the newsprint filter.
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/09retouch.png
+
+In the following example, I retouched the highlights in the hair of the character in the picture to make them completely
+white instead of light-gray, so they still stand out nicely in the finished picture.
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/10retouched.png
+
+8 Run the newsprint filter
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Now, run the GIMP's newsprint filter, under filters, distorts, newsprint.
+
+The first important settings is the spot size, which should be larger than your PCB's minimum detail size (about 10px
+with ``gerbolyze render`` default settings for good-quality silkscreen). In general the cheap and fast standard option of chinese PCB houses will require a larger detail size, but when you order specialty options like large size, 4-layer or non-green color along with a longer turnaround time you'll get much better-quality silk screen.
+
+The second important setting is oversampling, which should be set to four or slightly higher. This improves the result
+of the edge reconstruction of ``gerbolyze vectorize``.
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/11newsprint.png
+
+The following are examples on the detail resulting from the newsprint filter.
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/12newsprint.png
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/13newsprint.png
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/14newsprint.png
+
+9 Export the image for use with ``gerbolyze vectorize``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Simply export the image as a PNG file. Below are some pictures of the output ``gerbolyze vectorize`` produced for this
+example.
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/14result_cut.png
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/15result_cut.png
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/screenshots/16result_cut.png
+
+Gallery
+-------
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/sample2.jpg
+
+.. image:: https://raw.githubusercontent.com/jaseg/gerbolyze/master/sample3.jpg
+