cloning
link-mesh-array.py
link-mesh.py

mesh fabrication
staircase.py
triangle-donut.py
vertexAccumulator.py
randomSquareArray.py
meshFromBathymetry.py
cylinders-from-list-of-radii.py
binary-image-to-mesh.py
sphere-minecraft-schematic.py
spikify.py
add-to-mesh.py
mobius-strip.py
split-copy-mesh.py

fabricating other objects
create-text.py
text-from-file.py
create-camera.py
create-bezier.py
helix-bezier.py

material slots
cube-copy-blue.py
cube-turns-red.py
red-blue-per-object.py

animation and fcurves
csv-to-fcurve-loc-rot.py
csv-to-fcurve.py
pop-in-material.py
spike-wiggle-2.py
spike-wiggle.py
sweep-animate-size.py
animate-cycles-lamp-strength.py

incorporating python libraries
exec-text-library.py
exec-external-python.py
import-python.py

constraints
camera-track-object.py
text-track-camera.py

shape keys
explore-shape-keys.py
shape-key-fin.py
docking-tube.py

animating curve bevel
data-graph.py

drivers
scan-drivers.py
copy-drivers.py
driver-fin.py
driver-multi-chain.py

UV layers
barber-pole.py
expand-uv-to-fit.py
uv-from-geometry-cubic.py
flip-texture-v-coordinate.py

modifiers
hook-modifier-curve.py
rounded-prisms.py
make-tile.py
remove-action-modifiers.py

NLAs
explore-NLAs.py
spinning-frogs.py

video sequence editor (VSE)
create-vse-image-strips.py
slide-show.py
vse-strip-gap.py

images and textures
image-on-mesh.py
image-to-material-node.py
load-image-texture.py
texture-one-cube-face.py
condense-duplicate-images.py

analytic geometry
animate-random-spin.py
camera-cone-exp-2.py
camera-cone-exp.py
compute-circle-center.py
dihedral-angle-from-xy.py
extrude-edge-along-custom-axis.py
orientation-matrix.py
two-spheres.py
bezier-interpolate.py
rotate-to-match.py

node trees
change-diffuse-to-emission-node.py

etc
add-plane-from-selected-vertices.py
adjust-all-materials.py
all-nodes-cycles-materials.py
bit_shift.py
bone-orientation-demo.py
cannonball-packing.py
comb.py
convert-quaternion-keyframes-to-euler.py
copy-location-from-vertex-group.py
create-cycles-material.py
demonstrate-decomposition-instability.py
dump-point-cache.py
dump-screen-layout-info.py
expand-nla-strips.py
explore-edge-bevel-weight.py
find-action-users.py
find-green-rectangle.py
find-new-objects.py
fix-scene-layers.py
generate-makefile.py
link-external-data-blocks.py
list-referenced-files.py
material-readout.py
movie-card-stack.py
movies-on-faces.py
next-file-name.py
object-font-from-regular-font.py
operator-mesh-gridify.py
particle-animator.py
particle_loop.py
pose-match.py
pose-sequence-to-fbx.py
prepare-texture-bake.py
raining-physics.py
random-pebble-material.py
reverse-keyframes.py
scale-parallelogram.py
screenshot-sequence.py
select-objects-in-modifiers.py
select-vertices.py
shift-layers.py
snapshot-keyframes-as-mesh.py
sphere-project-texture.py
squish-mesh-axis.py
subdivide-fcurve.py
thicken-texture.py
transform-selected.py
voronoi-madness.py

import bpy
import bmesh

#
# This script shows how to apply an image to the faces of a cube.
#


def material_for_image(fname):

    mat = bpy.data.materials.get(fname)
    if mat is None:
        img = bpy.data.images.load(fname)

        # create a texture for the image
        tex = bpy.data.textures.new(fname, 'IMAGE')
        tex.image = img

        # put the texture on a material with UV coordinates
        mat = bpy.data.materials.new(fname)
        mat.texture_slots.add()
        mat.texture_slots[0].texture = tex
        mat.texture_slots[0].texture_coords = 'UV'
        mat.texture_slots[0].uv_layer = 'default'

    return mat

#


def material_on_mesh(mesh, mat):
    if len(mesh.materials) > 0:
        mesh.materials[0] = mat
    else:
        mesh.materials.append(mat)

    if len(mesh.uv_layers) < 1:
        # if we don't yet have a UV layer, let's just throw in a default one.
        # This will work fine for square faces, but anything else will need some work.
        mesh.uv_textures.new("default")

#


def guess_image_for_material(mat):
    """guess an image which would be appropriate to use for the 3d view for this material"""
    for tex_slot in mat.texture_slots:
        if tex_slot.texture.type == 'IMAGE':
            return tex_slot.texture.image
        else:
            print(tex_slot.texture.type)


def guess_image_for_mesh(mesh):
    """guess an image which would be appropriate to use for the 3d view for this mesh"""
    for mat in mesh.materials:
        img = guess_image_for_material(mat)
        if img is not None:
            return img
    return None


def set_preview_tex(mesh):
    """put the image behind the UV layer for the times when you're using the Multitexture shader on the 3D view.
    This is not critical for rendering, it's just nice for working in the 3D view."""

    bm = bmesh.new()
    bm.from_mesh(mesh)
    tl = bm.faces.layers.tex.active
    if tl:
        for f in bm.faces:
            f[tl].image = guess_image_for_material(mesh.materials[f.material_index])
    bm.to_mesh(mesh)

#


m1 = material_for_image("/var/tmp/bear.png")
for obj in bpy.context.scene.objects:
    if obj.select:
        material_on_mesh(obj.data, m1)
        set_preview_tex(obj.data)

Blender python API quick-start

Syntax highlighting by Pygments.