Зображення JPG широко використовуються для збереження зображень, малюнків та іншої візуальної інформації. Тоді як літофан представляє тривимірне зображення, яке змінює характеристики залежно від джерела світла за ним. У цій статті розповідається про те, як перетворити зображення JPG на літофан у C#.
- Конвертер JPG-зображень у Lithophane – встановлення C# API
- Перетворення зображення JPG на Lithophane у C#
Конвертер JPG-зображень у Lithophane – встановлення C# API
Aspose.3D for .NET API можна використовувати для керування різними тривимірними моделями. Просто налаштуйте API, завантаживши файли DLL із розділу Завантаження або за допомогою наступної інсталяційної команди NuGet:
PM> Install-Package Aspose.3D
Перетворення зображення JPG на Lithophane у C#
Ви можете конвертувати зображення JPG у Lithophane, виконавши такі дії:
- Завантажте вхідне зображення JPG.
- Виконуйте обчислювальні операції над об’єктами Mesh.
- Створіть 3d-сцену та збережіть об’єкти за допомогою методу 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++;
}
}
// Створення 3D-сцени та збереження об'єктів
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 на літофан. Ви можете використовувати літофан для створення 3D-моделі, він використовує товщину, щоб відобразити темряву зображення, і ви можете бачити зображення, коли розташовуєте джерело світла позаду надрукованої моделі. Крім того, ви можете відвідати розділ документація, щоб перевірити інші функції, які пропонує API. Якщо ви помітили будь-яку неясність, зв’яжіться з нами на форумі.