Immagine JPG in litofane C#

Le immagini JPG sono ampiamente utilizzate per salvare immagini, disegni e altre informazioni visive. Considerando che, litofane rappresenta un’immagine tridimensionale che cambia caratteristiche a seconda della fonte di luce dietro di essa. Questo articolo illustra come convertire un’immagine JPG in litofane in C#.

Convertitore da immagine JPG a litofane – Installazione dell’API C#

L’API Aspose.3D for .NET può essere utilizzata per manipolare diversi modelli tridimensionali. Basta configurare l’API scaricando i file DLL dalla sezione Download o con il seguente comando di installazione NuGet:

PM> Install-Package Aspose.3D

Converti l’immagine JPG in litofane in C#

Puoi convertire un’immagine JPG in Litophane con i seguenti passaggi:

  • Carica l’immagine JPG di input.
  • Eseguire operazioni di calcolo su oggetti Mesh.
  • Genera scene 3d e salva oggetti usando il metodo Salva.

Il codice di esempio seguente illustra come convertire un’immagine JPG in Lithophane a livello di codice in C#:

string file = "template.jpg";
string output = "file.fbx";

// Crea nuovi parametri
Aspose.ThreeD.Render.TextureData td = Aspose.ThreeD.Render.TextureData.FromFile(file);
const float nozzleSize = 0.9f;
const float layerHeight = 0.2f;
var grayscale = ToGrayscale(td);
const float width = 120.0f;
float height = width / td.Width * td.Height;
float thickness = 10.0f;
float layers = thickness / layerHeight;
int widthSegs = (int)Math.Floor(width / nozzleSize);
int heightSegs = (int)Math.Floor(height / nozzleSize);

// Eseguire operazioni di calcolo su oggetti Mesh
Aspose.ThreeD.Entities.Mesh mesh = new Aspose.ThreeD.Entities.Mesh();
for (int y = 0; y < heightSegs; y++)
{
    float dy = (float)y / heightSegs;
    for (int x = 0; x < widthSegs; x++)
    {
        float dx = (float)x / widthSegs;
        float gray = Sample(grayscale, td.Width, td.Height, dx, dy);
        float v = (1 - gray) * thickness;
        mesh.ControlPoints.Add(new Aspose.ThreeD.Utilities.Vector4(dx * width, dy * height, v));
    }
}

for (int y = 0; y < heightSegs - 1; y++)
{
    int row = (y * heightSegs);
    int ptr = row;
    for (int x = 0; x < widthSegs - 1; x++)
    {
        mesh.CreatePolygon(ptr, ptr + widthSegs, ptr + 1);
        mesh.CreatePolygon(ptr + 1, ptr + widthSegs, ptr + widthSegs + 1);
        ptr++;
    }
}

// Genera scene 3d e salva oggetti
Aspose.ThreeD.Scene scene = new Aspose.ThreeD.Scene(mesh);
scene.Save(output, Aspose.ThreeD.FileFormat.FBX7400ASCII);

// Il metodo di esempio da chiamare
static float Sample(float[,] data, int w, int h, float x, float y)
{
    return data[(int)(x * w), (int)(y * h)];
}

// Metodo ToGrayscale da chiamare
static float[,] ToGrayscale(Aspose.ThreeD.Render.TextureData td)
{
    var ret = new float[td.Width, td.Height];
    var stride = td.Stride;
    var data = td.Data;
    var bytesPerPixel = td.BytesPerPixel;
    for (int y = 0; y < td.Height; y++)
    {
        int ptr = y * stride;
        for (int x = 0; x < td.Width; x++)
        {
            var v = (data[ptr] * 0.21f + data[ptr + 1] * 0.72f + data[ptr + 2] * 0.07f) / 255.0f;
            ret[x, y] = v;
            ptr += bytesPerPixel;
        }
    }
    return ret;
}

Ottieni una licenza temporanea gratuita

Puoi valutare l’API nella sua piena capacità richiedendo una licenza temporanea gratuita.

Demo in linea

Prova l’app web JPG Image to Lithophane Converter sviluppata utilizzando questa API.

Conclusione

In questo articolo, hai esplorato la conversione dell’immagine JPG in litofane. Puoi usare la litofania per creare un modello 3D, usa lo spessore per riflettere l’oscurità dell’immagine e puoi vedere l’immagine quando metti una fonte di luce dietro il modello stampato. Inoltre, puoi visitare la sezione documentazione per controllare altre funzionalità offerte dall’API. Nel caso in cui noti qualche ambiguità, contattaci al forum.

Guarda anche

Converti USDZ in HTML in C#