تصویر PNG به Lithophane C#

فرمت PNG محبوب است زیرا می تواند شامل گرافیک شفاف باشد. در حالی که lithophane یک اثر هنری حکاکی شده یا قالب‌گیری شده در مواد بسیار نازک است که با قرار دادن منبع نور در پشت چنین مدلی می‌توانید آن را ببینید. این مقاله نحوه تبدیل یک تصویر PNG به لیتوفان در سی شارپ را پوشش می دهد.

تبدیل تصویر PNG به Lithophane – نصب C# API

Aspose.3D for .NET API را می توان برای کار با مدل ها و صحنه های سه بعدی مختلف استفاده کرد. می‌توانید به راحتی API را با دانلود فایل‌های DLL مرجع آن از صفحه New Releases یا با استفاده از دستور نصب NuGet زیر پیکربندی کنید:

PM> Install-Package Aspose.3D

تبدیل تصویر PNG به Lithophane در سی شارپ

با دنبال کردن مراحل زیر می توانید یک فایل تصویری PNG را به فرمت Lithophane تبدیل کنید:

  • تصویر PNG ورودی را بارگیری کنید.
  • انجام عملیات محاسباتی روی اشیاء مش.
  • با روش Save صحنه سه بعدی تولید کنید و اشیاء را ذخیره کنید.

قطعه کد زیر نحوه تبدیل یک تصویر PNG به Lithophane را در سی شارپ توضیح می دهد:

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

// چند پارامتر جدید ایجاد کنید
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);

// انجام عملیات محاسباتی روی اشیاء مش
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++;
    }
}

// صحنه سه بعدی تولید کنید و اشیاء را ذخیره کنید
Aspose.ThreeD.Scene scene = new Aspose.ThreeD.Scene(mesh);
scene.Save(output, Aspose.ThreeD.FileFormat.FBX7400ASCII);

// روش نمونه برای فراخوانی
static float Sample(float[,] data, int w, int h, float x, float y)
{
    return data[(int)(x * w), (int)(y * h)];
}

// روش ToGrayscale برای فراخوانی
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;
}

مجوز موقت رایگان دریافت کنید

می‌توانید برای ارزیابی API بدون هیچ محدودیتی، مجوز موقت رایگان درخواست کنید.

نسخه ی نمایشی آنلاین

لطفاً برنامه وب PNG Image to Lithophane Converter را امتحان کنید که با استفاده از این API توسعه یافته است.

نتیجه

در این مقاله شما به بررسی تبدیل PNG Image به لیتوفان پرداخته اید. علاوه بر این، برای یادگیری سایر ویژگی‌های API، می‌توانید به فضای مستندات نگاهی بیندازید. در صورت داشتن هر گونه سؤال یا سؤال، لطفاً در [فروم 12 برای ما بنویسید.

همچنین ببینید

تبدیل فایل USDZ به GLB یا GLTF در C#