2010-03-23 35 views
7

Tôi đang làm việc trên một chương trình tạo hình thu nhỏ của hình ảnh JPEG khi đang di chuyển. Bây giờ tôi đã suy nghĩ: kể từ khi một hình ảnh JPEG được xây dựng từ khối 8x8-pixel (Wikipedia has a great explanation), nó sẽ có thể bỏ qua một phần của giải mã?Thay đổi kích thước hình ảnh JPEG trong khi giải mã

Giả sử hình thu nhỏ của tôi nhỏ hơn hình ảnh gốc ít nhất 8 lần. Sau đó chúng tôi có thể ánh xạ từng khối 8x8 trong tệp đầu vào thành 1 pixel trong đầu ra giải mã, bằng cách chỉ bao gồm cụm từ không đổi của biến đổi cosin rời rạc. Hầu hết dữ liệu hình ảnh có thể bị hủy ngay lập tức và không cần xử lý. Hơn nữa, mức sử dụng bộ nhớ bị giảm theo hệ số 64.

Tôi không muốn thực hiện điều này từ đầu; sẽ dễ dàng mất một tuần. Có mã nào ngoài kia có thể làm được không?

Nếu không, đây có phải là vì cách tiếp cận này không đáng giá hay đơn giản là vì chưa ai nghĩ đến nó?

+0

'libjpeg' đã có thể thực hiện việc này, bạn có thể sử dụng tính năng này trong ImageMagick bằng cách đặt kích thước hình ảnh ** trước khi tải **. –

Trả lời

4

Tôi nghĩ rằng tính năng djpeg's scale sẽ làm một việc như thế này.

Nó có thể chia tỷ lệ khối 8x8 thành bất kỳ kích thước nào từ 1 đến 16 pixel.

"Điều này rất thú vị vì đầu ra kích thước không gian khác nhau có thể được lấy trực tiếp từ dữ liệu JPEG (DCT) mà không cần giải mã toàn bộ và giải mã không gian riêng biệt".

+0

Chính xác những gì tôi đang tìm kiếm và nó cũng nằm trong một thư viện chính thống được cấp phép phù hợp. Cảm ơn bạn! – Thomas

0

Dự án tôi đang làm việc hiện đang sử dụng ImageGen làm tất cả các loại thay đổi kích cỡ hình ảnh khi đang di chuyển - điều này có thể tự thanh toán nếu danh sách đối sánh địa lý phù hợp với những gì bạn muốn. Nếu không, tôi đoán rằng bạn đang muốn thực hiện nén tệp bị mất trên hình ảnh, trong đó phải đã được thực hiện trước đó!

2

Theo this answer, EPEG từ Giác ngộ đã làm chính xác điều này, bằng cách thu thập các hệ số DCT để chia tỷ lệ hình ảnh xuống theo hệ số 8. Dưới đây là current home of EPEG.

+1

Tôi ước tôi có thể chấp nhận hai câu trả lời, nhưng than ôi, chỉ có thể có một câu trả lời. Upvoted dù sao. – Thomas

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