Gambar PNG ke Lithophane C#

PNG format populer karena dapat menyertakan grafik transparan. Padahal, litophane adalah karya seni yang diukir atau dicetak pada bahan yang sangat tipis yang dapat Anda lihat dengan meletakkan sumber cahaya di belakang model tersebut. Artikel ini membahas cara mengonversi gambar PNG menjadi litofan di C#.

PNG Image to Lithophane Converter – Instalasi C# API

Aspose.3D for .NET API dapat digunakan untuk bekerja dengan model dan pemandangan 3D yang berbeda. Anda dapat dengan mudah mengonfigurasi API dengan mengunduh file referensi DLL dari halaman Rilis Baru atau menggunakan perintah penginstalan NuGet berikut:

PM> Install-Package Aspose.3D

Konversi Gambar PNG ke Lithophane di C#

Anda dapat mengonversi file Gambar PNG ke format Lithophane dengan mengikuti langkah-langkah di bawah ini:

  • Muat gambar PNG masukan.
  • Melakukan operasi komputasi pada objek Mesh.
  • Hasilkan adegan 3d dan simpan objek dengan metode Save.

Cuplikan kode di bawah ini menjelaskan cara mengonversi Gambar PNG ke Lithophane secara terprogram dalam C#:

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

// Buat beberapa parameter baru
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);

// Melakukan operasi komputasi pada objek 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++;
    }
}

// Hasilkan adegan 3d dan simpan objek
Aspose.ThreeD.Scene scene = new Aspose.ThreeD.Scene(mesh);
scene.Save(output, Aspose.ThreeD.FileFormat.FBX7400ASCII);

// Metode sampel untuk dipanggil
static float Sample(float[,] data, int w, int h, float x, float y)
{
    return data[(int)(x * w), (int)(y * h)];
}

// Metode ToGrayscale untuk memanggil
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;
}

Dapatkan Lisensi Sementara Gratis

Anda dapat meminta lisensi sementara gratis untuk mengevaluasi API tanpa batasan apa pun.

Demo Daring

Silakan coba aplikasi web PNG Image to Lithophane Converter yang dikembangkan menggunakan API ini.

Kesimpulan

Pada artikel ini, Anda telah mempelajari konversi Gambar PNG menjadi litofan. Selain itu, Anda dapat melihat ruang dokumentasi untuk mempelajari fitur lain dari API. Jika Anda memiliki pertanyaan atau pertanyaan, silakan kirim email kepada kami di forum.

Lihat juga

Ubah USDZ ke File GLB atau GLTF di C#