תמונה JPG ל-Lithophane C#

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

ממיר JPG ל-Litophane – התקנת API של C#

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

PM> Install-Package Aspose.3D

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

אתה יכול להמיר תמונת JPG ל-Lithophane עם השלבים הבאים:

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

הקוד לדוגמה הבא מדגים כיצד להמיר תמונת JPG ל-Lithophane באופן תכנותי ב-C#:

string file = "template.jpg";
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;
}

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

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

הדגמה מקוונת

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

סיכום

במאמר זה חקרתם את ההמרה של תמונת JPG לליתופאן. אתה יכול להשתמש בליתופאן כדי ליצור מודל תלת מימד, הוא משתמש בעובי כדי לשקף את כהות התמונה ותוכל לראות את התמונה כאשר אתה שם מקור אור מאחורי הדגם המודפס. יתר על כן, אתה יכול לבקר בסעיף תיעוד כדי לבדוק תכונות אחרות המוצעות על ידי ה-API. במקרה שאתה מבחין באי בהירות כלשהי, אנא פנה אלינו בפורום.

ראה גם

המר USDZ ל-HTML ב-C#