- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我目前正在使用 draw2d lib 来渲染一些图像。我注意到构建 SVG 的核心算法和方法是相同的, 或 PNG图片。
我确实需要将此图像渲染为 SVG(用于 Web)和 PNG(用于 PDF)
唯一的区别在于输入类型和输出。
对于 PNG 渲染我有
作为输入:
var gc *draw2dimg.GraphicContext
var img *image.RGBA
img = image.NewRGBA(image.Rect(0, 0, xSize, ySize))
gc = draw2dimg.NewGraphicContext(img)
作为输出:
draw2dimg.SaveToPngFile(FileName, img)
对于 SVG,我有:
作为输入:
var gc *draw2dsvg.GraphicContext
var img *draw2dsvg.Svg
img = draw2dsvg.NewSvg()
gc = draw2dsvg.NewGraphicContext(img)
作为输出:
draw2dsvg.SaveToSvgFile(FileName, img)
在输入和输出之间我有相同的实现。
在 Go 中是否有任何方法可以使用不同的输入类型并获得相同的实现而无需重复一些代码?
câu trả lời hay nhất
正如我在评论中提到的,尝试通过将核心算法部分移动到函数中或可能移动到不同的包中来重构您的代码。为了说明这个想法,下面是 https://github.com/llgcode/draw2d 中示例的重构版本自述文件。
gói chính
nhập khẩu (
"hình ảnh"
"image/color"
"github.com/llgcode/draw2d"
"github.com/llgcode/draw2d/draw2dimg"
"github.com/llgcode/draw2d/draw2dpdf"
"github.com/llgcode/draw2d/draw2dsvg"
)
func coreDraw(gc draw2d.GraphicContext) {
// Set some properties
gc.SetFillColor(color.RGBA{0x44, 0xff, 0x44, 0xff})
gc.SetStrokeColor(color.RGBA{0x44, 0x44, 0x44, 0xff})
gc.SetLineWidth(5)
// Draw a closed shape
gc.BeginPath() // Initialize a new path
gc.MoveTo(10, 10) // Move to a position to start the new path
gc.LineTo(100, 50)
gc.QuadCurveTo(100, 10, 10, 10)
gc.Close()
gc.FillStroke()
}
hàm main() {
format := "svg"
switch format {
case "png":
dest := image.NewRGBA(image.Rect(0, 0, 297, 210.0))
gc := draw2dimg.NewGraphicContext(dest)
coreDraw(gc)
draw2dimg.SaveToPngFile("hello.png", dest)
case "pdf":
dest := draw2dpdf.NewPdf("L", "mm", "A4")
gc := draw2dpdf.NewGraphicContext(dest)
coreDraw(gc)
draw2dpdf.SaveToPdfFile("hello.pdf", dest)
case "svg":
img := draw2dsvg.NewSvg()
gc := draw2dsvg.NewGraphicContext(img)
coreDraw(gc)
draw2dsvg.SaveToSvgFile("hello.svg", img)
}
}
关于go - Go 中的相同算法、多种输入和输出类型的可能性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49050850/
Tôi đang sử dụng lệnh OUTFILE nhưng do vấn đề về quyền và rủi ro bảo mật, tôi muốn kết xuất đầu ra của shell vào một tệp nhưng tôi gặp phải một số lỗi. Những gì tôi đã thử #Đây là một shell đơn giản để kết nối
Tôi mới bắt đầu học Java và tôi muốn vượt qua những trở ngại phát sinh khi cố gắng tạo một chương trình Java cho "vấn đề" này. Đây là một vấn đề tôi phải tạo một chương trình để giải quyết: Tandy thích phát kẹo, nhưng chỉ có n viên kẹo. Đối với người được cô ấy tặng kẹo,
Xin chào, tôi tự hỏi liệu tôi có thể nhận được sự trợ giúp nào về vấn đề in ra nội dung của vectơ trong C++ không. Tôi đang cố gắng in ra tất cả các biến của một lớp theo một thứ tự cụ thể, trong một hoặc hai lệnh gọi hàm. Nhưng tôi gặp một lỗi lạ khi duyệt qua vectơ
Tôi đang sử dụng intellij (2019.1.1) cho dự án java gradle (5.4.1) và lombok (1.18.6) để tạo mã tự động. Intellij đưa các nguồn được tạo ra
EDIT: Sau khi liên lạc với guest271314, tôi nhận ra rằng cách diễn đạt của câu hỏi (trong nội dung câu hỏi của tôi) có thể gây hiểu nhầm. Tôi giữ lại phiên bản cũ và viết lại phiên bản mới tốt hơn Bối cảnh: Khi nhận JSON từ máy chủ từ xa, tiêu đề phản hồi chứa một
Câu hỏi của tôi có thể hơi khó hiểu. Vấn đề tôi gặp phải là tôi đang gọi một thủ tục bằng cách sử dụng StoredProcedureCall từ Java, ví dụ: StoredProcedureCall call = new Store
Trong một số IDL mà tôi đã sử dụng, tôi nhận thấy có 2 quy ước để đánh dấu giá trị trả về trong các phương thức - [in, out] và [out, retval]. [in, out] dường như được sử dụng khi có nhiều giá trị trả về, ví dụ: HRESULT MyMetho
Khi tôi xem kết quả trợ giúp của gar -h, nó cho tôi biết: […] gar: mục tiêu được hỗ trợ: elf64-x86-64 elf32-i386 a.out-i386-linux [...]
Tôi muốn lặp qua một danh sách và in một phần của nó ở định dạng HTML và một phần của nó ở định dạng mã. Vì vậy, nói chính xác hơn: Tôi muốn tạo ra kết quả tương tự như số 1 là số tuyệt vời 2 là số tuyệt vời
Tôi có quy trình tekton bên dưới và đang cố chạy nó trên Google Cloud. Ràng buộc vai trò cụm. Vai trò của cụm. Tài khoản dịch vụ có các quyền sau. . ngoại lệ. Không chắc chắn những quyền nào cần được đặt cho tài khoản dịch vụ.
Khi cố gắng lọc đầu ra rất dài từ make cho một cảnh báo hoặc thông báo lỗi cụ thể, suy nghĩ đầu tiên là: $ make grep -i 'warning: someone set up us the bom' Tuy nhiên
Tôi đang tạo một lớp tiện ích trừu tượng hoạt động trên một nhóm lớp bên ngoài khác (ngoài tầm kiểm soát của tôi). Các lớp bên ngoài giống nhau về mặt khái niệm ở một số điểm giao diện nhất định, nhưng cú pháp để truy cập các thuộc tính tương tự của chúng là khác nhau. Họ cũng có cú pháp khác nhau để áp dụng các kết quả của hoạt động công cụ. tôi đã tạo
Câu hỏi này đã có câu trả lời: Các số bắt đầu bằng 0 có nghĩa là gì trong python? (9 câu trả lời) Đã đóng 7 năm trước. Khi sử dụng toán tử AND bitwise (&) trong mã của tôi, tôi
Tôi đã viết mã này để phân tích các dòng từ tệp đầu vào Định dạng đầu vào: ID phim có thể có nhiều mục nhập nên chúng ta nên tính trung bình Đầu ra: ** Không trùng lặp (đó là vấn đề) import re f = open(" ratings2 .txt",
Tôi cần xử lý hơn 10 triệu bộ dữ liệu quang phổ. Cấu trúc dữ liệu như sau: có khoảng 1000 tệp .fits (.fits là một định dạng lưu trữ dữ liệu nhất định), mỗi tệp chứa khoảng 600-1000 phổ, trong đó có khoảng 450 phổ trong mỗi phổ
Tôi đã viết một chương trình C đơn giản để đọc một tệp và tạo một bảng chứa mỗi từ và tần suất xuất hiện của nó. Chương trình hoạt động, tôi đã có thể lấy đầu ra của màn hình trong một thiết bị đầu cuối chạy trên Linux, tuy nhiên, tôi không chắc chắn làm cách nào để tạo màn hình để tạo các từ có chứa
Thật khó để nói những gì để hỏi ở đây. Câu hỏi không rõ ràng, mơ hồ, không đầy đủ, quá rộng hoặc hùng biện và không thể trả lời hợp lý ở dạng hiện tại. Để được trợ giúp làm rõ vấn đề này để có thể mở lại, hãy truy cập trung tâm trợ giúp Đóng 1.
1. Đầu ra thông thường: print(str)#str là chuỗi bất kỳ, số... 2. Đầu ra có định dạng: ?
Tôi không thể làm cho logstash hoạt động bình thường. Ví dụ về logstash cơ bản hoạt động. Nhưng sau đó tôi gặp khó khăn với Ví dụ về đường ống nâng cao. Có lẽ đây cũng có thể là Elasticsear.
Đây là những gì tôi muốn làm: Tôi muốn người dùng cung cấp cho chương trình của tôi một số dữ liệu âm thanh (đầu vào qua micrô), giữ nó trong 250 mili giây rồi xuất ra qua loa. Tôi đã thực hiện việc này bằng API âm thanh Java. Vấn đề là nó hơi chậm. từ việc tạo ra âm thanh đến
Tôi là một lập trình viên xuất sắc, rất giỏi!