Sử dụng thư viện graphics.h trong c/c++ để hiện thị 1 file ảnh png?

chào các bạn
mình đang làm bài tập xử lý ảnh số, có 1 số vấn đề như sau
mình cần đọc cấu trúc nhị phân của ảnh png, và giải nén ảnh, sau đó hiển thị ảnh ra,
mình muốn hỏi phần hiển thị 1 ảnh png, mình có thể dùng thư viện graphics.h trong c/c++ để hiện thị không, vì mình cũng ít dùng thư viện này nên không rõ, cơ bản là chỉ cần tạo ra 1 cửa sổ m.n pixel, rồi set được màu cho từng pixel là được, chỉ cần hỗ trợ mô hình màu greyscale với rbg và rbga thôi
xincamon

Help help help :slight_smile:

Thằng đấy cũ lắm rồi, màu cũng không chuẩn
Dùng mấy thư viện mới mà nhẹ ấy


http://cimg.eu

Hay libpng, opencv,…

//RGB thôi, A là png or bitmap rồi

2 Likes

Nếu mình không được dùng hàm hay thư viện có sẵn thì hiển thị ảnh phải làm ntn nhỉ.đọc thì m làm rồi. Nhưng hiển thị mà tự code chay thì m chưa biết làm ntn

Tự viết tay hàm đọc điểm ảnh rất phê đấy bạn, tốt nhất là dùng 1 header-likes library rồi đọc, sau đó vẽ lên winapi form là đơn giản nhất.

// Bản thân mình cũng chỉ dùng lib cho tiện, vì ảnh rất nhiều loại, xử lí để ra được matrix không đơn giản.

2 Likes

Mình đang học môn xử lý ảnh. Thầy k cho dùng hàm có sẵn hay thư viện có sẵn. Tự code tay. Vì k phải làm sản phẩm chủ yếu là tự code để hiểu rõ bản chất ảnh đc lưu trữ, nén, đọc ghi ntn. Mình làm về png. Còn giải mã dữ liệu ảnh với hiển thị . mình k biết dùng cái gì để có tạo 1 cửa sổ hiện thị ảnh theo 1 kích thước m.n và có thể set màu cho từng pixel

Vẽ trực tiếp lên Console của windows cũng được, nhưng phải set 256 màu cho nó, nếu trên linux thì đơn giản hơn, nó hỗ trợ sẵn term-265 color rồi, ngoài ra vẽ trên Win32 API cũng được, nó cũng chỉ xoay quanh quản lí HWND thôi, thực tế hơn:
(Nên tìm thêm tài liệu về set pixel color on win32 api)


2 Likes

bạn có thể cho mình xin tài liệu hay link về cách vẽ trực tiếp lên console không , tks bạn :slight_smile:

Google nhiều mà, tìm đúng từ khóa là ra. Lúc trước mình dùng Vim trên console nó không trực tiếp hỗ trợ 256 màu, nó chỉ có 16 màu thì phải. Codeblock thì hiện 256 màu, tuy nhiên nó là linux type nên không nói.

2 Likes

xài SDL2 hay SFML ấy hiển thị cho dễ

sf::Image image;
image.create(600, 400);
...
image.SetPixel(x, y, sf::Color(r, g, b));

...
window.clear();
drawImage(window, image);
window.display();


void drawImage(sf::RenderTarget& target, const sf::Image& image)
{
    sf::Texture tex;
    tex.loadFromImage(image);
    target.draw(sf::Sprite(tex));
}
2 Likes

console của visual studio bao nhiều màu nhỉ , tks bạn

nhưng mà thầy bảo không được dùng thư viện, hàm có sẵn (ở mức có sẵn hoàn toàn ấy, chứ k tính mấy cái hàm có sẵn cơ bản) thì có được dùng như trên không bạn(anh) nhẩy, thầy bắt tự đọc và hiển thị bằng code thủ công T.T

thì hỏi ông thầy code này có được ko. SFML chỉ vẽ cái image lên màn hình, còn set từng pixel của image đấy là mình tự làm. Còn bảo tự vẽ lên màn hình thì quá cha rồi, mời ông thầy làm luôn, có cần viết OS mới luôn ko vì xài Windows/Linux là cheat rồi.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?