2010-07-15 30 views

Trả lời

13

Tôi có thể nghĩ hoặc là ImageMagick hoặc CImg. Đây là số CImg tutorial cho bạn. Chúng trừu tượng hóa rất nhiều chi tiết giải nén và chỉ cung cấp cho bạn một mạng lưới để làm việc.

Nếu bạn dùng CImg, bạn chỉ cần sử dụng cuộc gọi data. Bạn có thể làm điều gì đó như:

CImg<unsigned char> src("image.jpg"); 
int width = src.width(); 
int height = src.height(); 
unsigned char* ptr = src.data(10,10); // get pointer to pixel @ 10,10 
unsigned char pixel = *ptr; 
+0

CImg là một thư viện tốt. Thứ hai. –

+0

Cách lấy chiều rộng và chiều cao? – user198729

+0

Tôi đã thay đổi ví dụ để chỉ cho bạn cách lấy chiều cao/chiều rộng –

0

jpeglib là một thư viện khá tiện dụng để chơi với jpegs.

0

Để truy cập thông tin mức pixel. libjpeg & Công cụ I/O hình ảnh JAI phải đủ. JAI cung cấp khung xử lý hình ảnh tiên tiến hơn thế này. Tất cả các tùy chọn cho phép bạn đọc/ghi các pixel vào một tệp hình ảnh.

libjpeg Trong C/C++. Nó có sẵn cho Linux và Window. Tôi đã sử dụng nó trong Linux trước và nó hoạt động tốt. Tuy nhiên, nếu bạn muốn xử lý loại hình ảnh khác, bạn có thể cần phải nhận gói khác và tìm hiểu giao diện API khác.

Hình ảnh nâng cao Java (JAI) Hình ảnh I/O Công cụ Hãy nhớ tải xuống gói java nền tảng cụ thể vì có tối ưu hóa cụ thể cho hệ thống khác nhau. Nó bao gồm không chỉ JPG nhưng định dạng hình ảnh khác quá với giao diện chính xác cùng một API.

Hình ảnh nâng cao Java (JAI) Nếu bạn dự định tiến hành xử lý nâng cao hơn như sử dụng toán tử hình ảnh và bộ lọc, bạn có thể sử dụng điều này. Đây là một gói cung cấp chức năng cấp cao hơn các công cụ I/O hình ảnh JAI.

EDIT: để loại bỏ 1, 2 & 3 như đề xuất

+0

câu trả lời không được hiển thị trong bất kỳ trật tự cố định, do đó, đề cập đến khác câu trả lời là # 1, # 2, # 3 là khó hiểu. Sẽ hữu ích nếu tóm tắt câu trả lời (ở đây có thể là tên khung) hoặc đặt tên cho người trả lời để xác định các câu trả lời khác. Liên kết các câu trả lời khác thậm chí còn tốt hơn. –

+0

@Ben Voigt: lưu ý và cảm ơn bạn đã chia sẻ thực hành tốt này. – ttchong

1

Tôi sẽ sử dụng Allegro trò chơi Thư viện http://liballeg.org/Allegro nó đơn giản/mã nguồn mở/miễn phí/đa nền, và bạn có thể lặp lại từng pixel nếu bạn muốn

4

Qt có một lớp QImage:

QImage i("input.jpg"); 
int x, y; 
for (y = 0; &lt; i.height(); ++y) { 
    for (x = 0; x &lt; i.width(); ++x) { 
     doSomethingWith(i.pixel(x, y)); 
    } 
} 
+0

Có, Qt thật tuyệt –

0

Hãy thử FreeImage, có vẻ như khá linh hoạt và nhiều dự án sử dụng nó.

Các vấn đề liên quan