JPG Görüntüsünden Lithophane C#'a

JPG resimler, resimleri, çizimleri ve diğer görsel bilgileri kaydetmek için yaygın olarak kullanılır. litofan ise arkasındaki ışık kaynağına göre özellik değiştiren üç boyutlu görüntüyü temsil eder. Bu makale, bir JPG görüntüsünün C# dilinde litofana nasıl dönüştürüleceğini kapsar.

JPG Görüntüsünden Lithophane Converter – C# API Kurulumu

Aspose.3D for .NET API, farklı üç boyutlu modelleri işlemek için kullanılabilir. İndirilenler bölümünden DLL dosyalarını indirerek veya aşağıdaki NuGet kurulum komutuyla API’yi yapılandırmanız yeterlidir:

PM> Install-Package Aspose.3D

JPG Görüntüsünü C# dilinde Lithophane’a dönüştürün

Bir JPG görüntüsünü aşağıdaki adımlarla Lithophane’e dönüştürebilirsiniz:

  • Giriş JPG görüntüsünü yükleyin.
  • Mesh nesneleri üzerinde hesaplama işlemleri gerçekleştirin.
  • Kaydet yöntemini kullanarak 3B sahne oluşturun ve nesneleri kaydedin.

Aşağıdaki örnek kod, bir JPG Görüntüsünün C# dilinde programlı olarak Lithophane’e nasıl dönüştürüleceğini gösterir:

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

// Bazı yeni parametreler oluşturun
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);

// Mesh nesnelerinde hesaplama işlemleri gerçekleştirin
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++;
    }
}

// 3B sahne oluşturun ve nesneleri kaydedin
Aspose.ThreeD.Scene scene = new Aspose.ThreeD.Scene(mesh);
scene.Save(output, Aspose.ThreeD.FileFormat.FBX7400ASCII);

// Çağrılacak örnek yöntem
static float Sample(float[,] data, int w, int h, float x, float y)
{
    return data[(int)(x * w), (int)(y * h)];
}

// Çağrılacak ToGrayscale yöntemi
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;
}

Ücretsiz Geçici Lisans Alın

Ücretsiz geçici lisans talep ederek API’yi tam kapasitesiyle değerlendirebilirsiniz.

Çevrimiçi Demo

Lütfen bu API kullanılarak geliştirilen JPG Image to Lithophane Converter web uygulamasını deneyin.

Çözüm

Bu makalede, JPG Görüntüsünün litofana dönüştürülmesini incelediniz. Litofanı 3D model oluşturmak için kullanabilirsiniz, görüntünün koyuluğunu yansıtmak için kalınlık kullanır ve yazdırılan modelin arkasına bir ışık kaynağı koyduğunuzda görüntüyü görebilirsiniz. Ayrıca, API tarafından sunulan diğer özelliklere göz atmak için belgeler bölümünü ziyaret edebilirsiniz. Herhangi bir belirsizlik fark ederseniz, lütfen forumdan bize ulaşın.

Ayrıca bakınız

C# dilinde USDZ’yi HTML’ye dönüştürün