صورة PNG إلى Lithophane C#

تنسيق PNG شائع حيث يمكن أن يتضمن رسومات شفافة. حيث إن الليثوفان هو عمل فني محفور أو مقولب من مادة رقيقة جدًا يمكنك رؤيتها بوضع مصدر الضوء خلف هذا النموذج. تتناول هذه المقالة كيفية تحويل صورة PNG إلى مادة الليثوفان في C#.

صورة PNG لمحول الليثوفان - تثبيت C# API

Aspose.3D for .NET يمكن استخدام API للعمل مع نماذج ومشاهد ثلاثية الأبعاد مختلفة. يمكنك تكوين API بسهولة عن طريق تنزيل ملفات DLL المرجعية الخاصة بها من صفحة الإصدارات الجديدة أو باستخدام أمر التثبيت NuGet التالي:

PM> Install-Package Aspose.3D

تحويل صورة PNG إلى Lithophane في C#

يمكنك تحويل ملف صورة PNG إلى تنسيق Lithophane باتباع الخطوات التالية:

  • قم بتحميل صورة PNG المدخلة.
  • إجراء عمليات حسابية على كائنات الشبكة.
  • قم بإنشاء مشهد ثلاثي الأبعاد وحفظ الكائنات باستخدام طريقة حفظ.

يوضح مقتطف الشفرة أدناه كيفية تحويل صورة PNG إلى Lithophane برمجيًا في C#:

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 الذي تم تطويره باستخدام واجهة برمجة التطبيقات هذه.

استنتاج

في هذه المقالة ، استكشفت تحويل صورة PNG إلى مادة الليثوفان. علاوة على ذلك ، يمكنك إلقاء نظرة على مساحة التوثيق للتعرف على الميزات الأخرى لواجهة برمجة التطبيقات. في حال كان لديك أي أسئلة أو استفسارات ، يرجى مراسلتنا على المنتدى.

أنظر أيضا

تحويل ملف USDZ إلى GLB أو GLTF في C#