Imagem JPG para litofane C#

JPG imagens são amplamente utilizadas para salvar fotos, desenhos e outras informações visuais. Considerando que, lithophane representa uma imagem tridimensional que muda de características dependendo da fonte de luz por trás dela. Este artigo aborda como converter uma imagem JPG em litofane em C#.

JPG Image to Lithophane Converter – Instalação da API C#

Aspose.3D for .NET API pode ser usada para manipular diferentes modelos tridimensionais. Basta configurar a API baixando os arquivos DLL da seção Downloads ou com o seguinte comando de instalação NuGet:

PM> Install-Package Aspose.3D

Converter imagem JPG para litofane em C

Você pode converter uma imagem JPG para Lithophane com as seguintes etapas:

  • Carregue a imagem JPG de entrada.
  • Execute operações computacionais em objetos Mesh.
  • Gere uma cena 3D e salve objetos usando o método Save.

O código de exemplo a seguir demonstra como converter uma imagem JPG em Lithophane programaticamente em C#:

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

// Crie alguns novos parâmetros
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);

// Execute operações computacionais em objetos 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++;
    }
}

// Gere cena 3d e salve objetos
Aspose.ThreeD.Scene scene = new Aspose.ThreeD.Scene(mesh);
scene.Save(output, Aspose.ThreeD.FileFormat.FBX7400ASCII);

// O método de amostra a ser chamado
static float Sample(float[,] data, int w, int h, float x, float y)
{
    return data[(int)(x * w), (int)(y * h)];
}

// Método ToGrayscale para chamar
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;
}

Obtenha Licença Temporária Gratuita

Você pode avaliar a API em sua capacidade total solicitando uma licença temporária gratuita.

Demonstração on-line

Experimente o aplicativo da Web JPG Image to Lithophane Converter desenvolvido usando esta API.

Conclusão

Neste artigo, você explorou a conversão de imagem JPG para litofane. Você pode usar o litofane para criar um modelo 3D, ele usa a espessura para refletir a escuridão da imagem e você pode ver a imagem quando coloca uma fonte de luz atrás do modelo impresso. Além disso, você pode visitar a seção documentação para conferir outros recursos oferecidos pela API. Caso você perceba alguma ambiguidade, entre em contato conosco no fórum.

Veja também

Converter USDZ para HTML em C#