תמונת PNG ל-Lithophane C#

פורמט PNG פופולרי מכיוון שהם יכולים לכלול גרפיקה שקופה. ואילו, lithopane הוא יצירת אמנות חרוטה או יצוקה בחומר דק מאוד שניתן לראות על ידי הצבת מקור האור מאחורי דגם כזה. מאמר זה עוסק כיצד להמיר תמונת PNG ל-lithophane ב-C#.

PNG Image to Lithophane Converter – התקנת API של C#

ניתן להשתמש ב-API Aspose.3D for .NET כדי לעבוד עם מודלים וסצנות תלת-ממדיות שונות. אתה יכול בקלות להגדיר את ה-API על ידי הורדת קובצי ה-DLL ההתייחסות שלו מהדף חדשות מהדורות או באמצעות פקודת ההתקנה הבאה של NuGet:

PM> Install-Package Aspose.3D

המרת תמונת PNG ל-Lithophane ב-C#

אתה יכול להמיר קובץ תמונת PNG לפורמט Lithophane על ידי ביצוע השלבים הבאים:

  • טען את תמונת ה-PNG הקלט.
  • בצע פעולות חישוביות על אובייקטי Mesh.
  • צור סצנה תלת מימדית ושמור אובייקטים בשיטת Save.

קטע הקוד שלהלן מסביר כיצד להמיר תמונת 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);

// בצע פעולות חישוביות על אובייקטי 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++;
    }
}

// צור סצנה תלת מימדית ושמור אובייקטים
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;
}

קבל רישיון זמני בחינם

אתה יכול לבקש [רישיון זמני] בחינם9 כדי להעריך את ה-API ללא כל הגבלה.

הדגמה מקוונת

נסה את אפליקציית האינטרנט PNG Image to Lithophane Converter שפותחה באמצעות ממשק API זה.

סיכום

במאמר זה חקרתם את ההמרה של תמונת PNG ל-lithophane. יתר על כן, אתה יכול להסתכל במרחב תיעוד כדי ללמוד תכונות אחרות של ה-API. אם יש לך שאלות או שאלות כלשהן, אנא כתוב לנו בפורום.

ראה גם

המר USDZ לקובץ GLB או GLTF ב-C#