Hình ảnh JPG sang Lithophane C#

JPG hình ảnh được sử dụng rộng rãi để lưu hình ảnh, bản vẽ và thông tin trực quan khác. Trong khi, lithophane đại diện cho hình ảnh ba chiều thay đổi các đặc tính tùy thuộc vào nguồn sáng đằng sau nó. Bài viết này trình bày cách chuyển đổi ảnh JPG sang lithophane trong C#.

JPG Image to Lithophane Converter - C# API cài đặt

API Aspose.3D for .NET có thể được sử dụng để điều khiển các mô hình ba chiều khác nhau. Chỉ cần định cấu hình API bằng cách tải xuống tệp DLL từ phần Tải xuống hoặc bằng lệnh cài đặt NuGet sau:

PM> Install-Package Aspose.3D

Chuyển đổi hình ảnh JPG sang Lithophane trong C#

Bạn có thể chuyển đổi ảnh JPG sang Lithophane bằng các bước sau:

  • Tải hình ảnh JPG đầu vào.
  • Thực hiện các thao tác tính toán trên các đối tượng Mesh.
  • Tạo cảnh 3D và lưu các đối tượng bằng phương pháp Lưu.

Mã mẫu sau đây trình bày cách chuyển đổi Hình ảnh JPG sang Lithophane theo chương trình trong C#:

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

// Tạo một số thông số mới
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);

// Thực hiện các hoạt động tính toán trên các đối tượng 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++;
    }
}

// Tạo cảnh 3D và lưu các đối tượng
Aspose.ThreeD.Scene scene = new Aspose.ThreeD.Scene(mesh);
scene.Save(output, Aspose.ThreeD.FileFormat.FBX7400ASCII);

// Phương thức mẫu để gọi
static float Sample(float[,] data, int w, int h, float x, float y)
{
    return data[(int)(x * w), (int)(y * h)];
}

// Phương thức ToGrayscale để gọi
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;
}

Nhận Giấy phép Tạm thời Miễn phí

Bạn có thể đánh giá API ở mức đầy đủ của nó bằng cách yêu cầu giấy phép tạm thời miễn phí.

Demo trực tuyến

Vui lòng thử ứng dụng web JPG Image to Lithophane Converter được phát triển bằng API này.

Sự kết luận

Trong bài viết này, bạn đã khám phá việc chuyển đổi JPG Image sang lithophane. Bạn có thể sử dụng lithophane để tạo mô hình 3D, nó sử dụng độ dày để phản chiếu độ tối của hình ảnh và bạn có thể nhìn thấy hình ảnh khi bạn đặt một nguồn sáng phía sau mô hình được in. Hơn nữa, bạn có thể truy cập phần tài liệu để xem các tính năng khác được cung cấp bởi API. Trong trường hợp bạn nhận thấy bất kỳ sự không rõ ràng nào, vui lòng liên hệ với chúng tôi tại diễn đàn.

Xem thêm

Chuyển USDZ sang HTML trong C#