'Convert 3D .stl file to JPG image with Python

How do I convert a 3D object in any STL file into a JPG or PNG image.

I tried searching a little bit online but I wasn't been able to arrive at finding any possible solutions.

Can anyone help me with the code that can do this straight forward task with Python? IS there any libraries that can help with that?

EDIT :

Code Sample:

from mpl_toolkits import mplot3d
from matplotlib import pyplot
import pathlib

DIR = str(pathlib.Path(__file__).parent.resolve()).replace('\\', '/')
path = f'{DIR}/any_stl_file.stl'

# Create a new plot
figure = pyplot.figure()
axes = mplot3d.Axes3D(figure)

# Load the STL files and add the vectors to the plot
your_mesh = mesh.Mesh.from_file(path)
axes.add_collection3d(mplot3d.art3d.Poly3DCollection(your_mesh.vectors))

# Auto scale to the mesh size
scale = your_mesh.points.flatten()
axes.auto_scale_xyz(scale, scale, scale)

pyplot.savefig(f"{DIR}/the_image.jpg")```


Solution 1:[1]

Take a look at https://pypi.org/project/numpy-stl/

This code snippet is from the link above:

from stl import mesh
from mpl_toolkits import mplot3d
from matplotlib import pyplot

# Create a new plot
figure = pyplot.figure()
axes = mplot3d.Axes3D(figure)

# Load the STL files and add the vectors to the plot
your_mesh = mesh.Mesh.from_file('tests/stl_binary/HalfDonut.stl')
axes.add_collection3d(mplot3d.art3d.Poly3DCollection(your_mesh.vectors))

# Auto scale to the mesh size
scale = your_mesh.points.flatten()
axes.auto_scale_xyz(scale, scale, scale)

# Show the plot to the screen
pyplot.show()

To save a pyplot object as an image:

pyplot.savefig("file_name.jpg")

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1