Đây là lệnh pnmtojpeg có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi, chẳng hạn như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
pnmtojpeg - chuyển đổi hình ảnh PNM thành hình ảnh JFIF ("JPEG")
SYNOPSIS
pnmtojpeg [ lựa chọn ] [ tên tập tin ]
MÔ TẢ
pnmtojpeg chuyển đổi tệp hình ảnh PBM, PGM hoặc PPM đã đặt tên hoặc đầu vào tiêu chuẩn nếu không có tệp
được đặt tên cho tệp JFIF trên đầu ra tiêu chuẩn.
pnmtojpeg sử dụng thư viện JPEG của Tập đoàn JPEG độc lập để tạo tệp đầu ra. Nhìn thấy
http://www.ijg.org để biết thông tin về thư viện.
"JFIF" là tên chính xác của định dạng hình ảnh thường được gọi là "JPEG". Nghiêm ngặt
nói, JPEG là một phương pháp nén. Định dạng hình ảnh sử dụng nén JPEG
cho đến nay, phổ biến nhất là JFIF. Ngoài ra còn có một định dạng con của TIFF sử dụng JPEG
nén.
EXIF là một định dạng hình ảnh là một định dạng con của JFIF (nói cách khác, một tệp JFIF có chứa
Tiêu đề EXIF dưới dạng điểm đánh dấu APP1). pnmtojpeg tạo một hình ảnh EXIF khi bạn chỉ định
-exif tùy chọn.
LỰA CHỌN
Các tùy chọn cơ bản là:
--exif =thông số tập tin
Tùy chọn này chỉ định rằng hình ảnh đầu ra là EXIF (một định dạng con của JFIF),
tức là nó sẽ có tiêu đề EXIF là điểm đánh dấu JFIF APP1. Nội dung của nó
điểm đánh dấu là nội dung của tệp được chỉ định. Giá trị đặc biệt - có nghĩa là để đọc
nội dung tiêu đề EXIF từ đầu vào chuẩn. Không hợp lệ để chỉ định tiêu chuẩn
đầu vào cho cả tiêu đề EXIF và hình ảnh đầu vào.
Tệp EXIF bắt đầu bằng một trường hai byte là độ dài của tệp,
bao gồm trường độ dài, ở dạng nhị phân thuần túy, byte quan trọng nhất đầu tiên. Các
giá trị đặc biệt của XNUMX cho trường độ dài có nghĩa là không có tiêu đề EXIF,
tức là giống như không -exif Lựa chọn. Điều này rất hữu ích khi bạn chuyển đổi một tệp từ
JFIF sang PNM bằng cách sử dụng jpegtopnm, sau đó chuyển đổi nó, sau đó chuyển đổi nó trở lại JFIF với
pnmtojpegvà bạn không biết liệu nó có bao gồm tiêu đề EXIF hay không. jpegtopnm
tạo một tệp EXIF không chứa gì ngoài hai byte không khi JFIF đầu vào
tệp không có tiêu đề EXIF. Do đó, bạn có thể chuyển bất kỳ tiêu đề EXIF nào từ đầu vào
JFIF đến đầu ra JFIF mà không cần lo lắng về việc tiêu đề EXIF có thực sự hay không
tồn tại.
Nội dung của tệp EXIF sau trường độ dài là byte chính xác cho byte
nội dung của điểm đánh dấu APP1, không tính trường độ dài, tạo thành
Tiêu đề EXIF.
- chất lượng =n
Bảng lượng tử hóa tỷ lệ để điều chỉnh chất lượng hình ảnh. n là 0 (kém nhất) đến 100 (tốt nhất);
mặc định là 75. (Xem bên dưới để biết thêm thông tin.)
--thang độ xám
--thang độ xám
Tạo tệp JFIF thang xám. Với tùy chọn này, pnmtojpeg chuyển đổi màu đầu vào thành
vảy xám. Nếu bạn không chỉ định tùy chọn này, Tệp đầu ra có định dạng màu
nếu đầu vào là PPM và định dạng thang độ xám nếu đầu vào là PBM hoặc PGM.
Trong trường hợp đầu vào PPM, ngay cả khi tất cả các màu trong hình ảnh là màu xám, đầu ra là
ở định dạng màu. Tất nhiên, màu sắc trong đó vẫn là màu xám. Sự khác biệt là
định dạng màu đó chiếm nhiều dung lượng hơn và mất nhiều thời gian hơn để tạo và xử lý.
--tối ưu hóa
Thực hiện tối ưu hóa các tham số mã hóa entropy. Nếu không có cái này, pnmtojpeg sử dụng
các thông số mã hóa mặc định. --tối ưu hóa thường làm cho tệp JFIF ít
nhỏ hơn, nhưng pnmtojpeg chạy hơi chậm hơn và cần nhiều bộ nhớ hơn. Hình ảnh
chất lượng và tốc độ giải nén không bị ảnh hưởng bởi --tối ưu hóa.
--cấp tiến
Tạo tệp JPEG liên tục (xem bên dưới).
--comment =văn bản
Bao gồm một điểm đánh dấu nhận xét trong đầu ra JFIF, với văn bản nhận xét văn bản. Không có cái này
tùy chọn, không có đánh dấu nhận xét trong đầu ra.
--chất lượng tùy chọn cho phép bạn đánh đổi kích thước tệp nén với chất lượng của
hình ảnh được dựng lại: cài đặt chất lượng càng cao, tệp JFIF càng lớn và
gần hơn hình ảnh đầu ra sẽ giống với đầu vào ban đầu. Thông thường bạn muốn sử dụng
cài đặt chất lượng thấp nhất (tệp nhỏ nhất) giải nén thành một thứ gì đó trực quan
không thể phân biệt được với hình ảnh gốc. Vì mục đích này, cài đặt chất lượng phải
từ 50 đến 95; mặc định là 75 thường là đúng. Nếu bạn thấy khiếm khuyết tại
--quality = 75, sau đó tăng 5 hoặc 10 số đếm cùng một lúc cho đến khi bạn hài lòng với kết quả đầu ra
hình ảnh. (Cài đặt tối ưu sẽ thay đổi từ hình ảnh này sang hình ảnh khác.)
--quality = 100 tạo bảng lượng tử hóa của tất cả 1, giảm thiểu tổn thất trong
bước lượng tử hóa (nhưng vẫn có mất thông tin trong việc lấy mẫu con, cũng như làm tròn
lỗi). Cài đặt này chủ yếu được quan tâm cho các mục đích thử nghiệm. Giá trị chất lượng
trên khoảng 95 là không khuyến khích sử dụng bình thường; kích thước tệp nén tăng lên
đáng kể hầu như không tăng bất kỳ sự tăng trưởng nào về chất lượng hình ảnh đầu ra.
Theo hướng khác, giá trị chất lượng dưới 50 sẽ tạo ra các tệp rất nhỏ có hình ảnh thấp
chất lượng. Cài đặt khoảng 5 đến 10 có thể hữu ích trong việc chuẩn bị chỉ mục của một hình ảnh lớn
thư viện chẳng hạn. Cố gắng --quality = 2 (hoặc lâu hơn) đối với một số hiệu ứng Lập thể thú vị. (Ghi chú:
giá trị chất lượng dưới khoảng 25 tạo ra bảng lượng tử hóa 2 byte, được coi là
tùy chọn trong tiêu chuẩn JFIF. pnmtojpeg phát ra một thông báo cảnh báo khi bạn đưa ra một
giá trị chất lượng, vì một số chương trình JFIF khác có thể không giải mã được kết quả
tập tin. Sử dụng - đường cơ sở nếu bạn cần đảm bảo tính tương thích ở các giá trị chất lượng thấp.)
--cấp tiến tùy chọn tạo tệp "JPEG liên tục". Trong loại tệp JFIF này,
dữ liệu được lưu trữ trong nhiều lần quét với chất lượng ngày càng tăng. Nếu tệp đang được
được truyền qua một liên kết truyền thông chậm, bộ giải mã có thể sử dụng lần quét đầu tiên để hiển thị
hình ảnh chất lượng thấp rất nhanh chóng và sau đó có thể cải thiện màn hình với mỗi lần tiếp theo
quét. Hình ảnh cuối cùng hoàn toàn tương đương với tệp JFIF tiêu chuẩn có cùng chất lượng
và tổng kích thước tệp là như nhau - thường nhỏ hơn một chút. Phạt cảnh cáo:
progressive JPEG chưa được triển khai rộng rãi, vì vậy nhiều bộ giải mã sẽ không thể xem
tệp JPEG liên tục.
Tùy chọn cho người dùng nâng cao:
--dct = int
Sử dụng phương pháp DCT số nguyên (mặc định).
--dct = nhanh
Sử dụng số nguyên nhanh DCT (kém chính xác hơn).
--dct = float
Sử dụng phương pháp DCT dấu phẩy động. Phương pháp float chính xác hơn một chút
so với phương thức int, nhưng chậm hơn nhiều trừ khi máy của bạn có tốc độ nổi rất nhanh-
phần cứng điểm. Cũng lưu ý rằng kết quả của phương pháp dấu phẩy động có thể khác nhau
hơi trên các máy, trong khi các phương thức số nguyên sẽ cho kết quả giống nhau
mọi nơi. Phương pháp số nguyên nhanh kém chính xác hơn nhiều so với hai phương pháp kia.
--restart =n
Phát ra một điểm đánh dấu khởi động lại JPEG mỗi n Hàng MCU, hoặc hàng n MCU chặn nếu bạn nối thêm B
đến số. --khởi động lại 0 (mặc định) có nghĩa là không có dấu khởi động lại.
--smooth =n
Làm mịn hình ảnh đầu vào để loại bỏ nhiễu hòa sắc. n, từ 1 đến 100,
cho biết cường độ làm mịn. 0 (mặc định) có nghĩa là không làm mịn.
--maxmemory =n
Đặt giới hạn dung lượng bộ nhớ sử dụng để xử lý hình ảnh lớn. Giá trị ở
hàng nghìn byte hoặc hàng triệu byte nếu bạn nối thêm M đến số. Vì
thí dụ, - tối đa = 4 m chọn 4,000,000 byte. Nếu như pnmtojpeg cần thêm không gian, nó sẽ
sử dụng các tệp tạm thời.
--dài dòng
In ra tệp tin Lỗi Chuẩn thông báo về quá trình chuyển đổi. Cái này có thể
hữu ích trong việc gỡ lỗi các vấn đề.
--khởi động lại tùy chọn nói với pnmtojpeg để chèn thêm các điểm đánh dấu cho phép bộ giải mã JPEG
đồng bộ hóa lại sau một lỗi truyền. Nếu không có điểm đánh dấu khởi động lại, bất kỳ thiệt hại nào đối với
tệp nén thường sẽ làm hỏng hình ảnh từ điểm có lỗi đến cuối
hình ảnh; với các điểm đánh dấu khởi động lại, thiệt hại thường được giới hạn ở phần hình ảnh trở lên
đến điểm đánh dấu khởi động lại tiếp theo. Tất nhiên, các điểm đánh dấu khởi động lại chiếm thêm không gian. chúng tôi
giới thiệu --restart = 1 đối với hình ảnh sẽ được truyền qua các mạng không đáng tin cậy như
như Usenet.
--mịn màng tùy chọn lọc đầu vào để loại bỏ nhiễu quy mô nhỏ. Điều này thường hữu ích
khi chuyển đổi hình ảnh hòa sắc sang JFIF: hệ số làm mịn vừa phải từ 10 đến 50 sẽ bị loại bỏ
của các mẫu phối màu trong tệp đầu vào, dẫn đến tệp JFIF nhỏ hơn và tốt hơn-
hình ảnh tìm kiếm. Tuy nhiên, hệ số làm mịn quá lớn sẽ làm mờ hình ảnh một cách rõ ràng.
Các tùy chọn cho thuật sĩ:
- đường cơ sở
Buộc tạo các bảng lượng tử hóa tương thích với đường cơ sở. Cái kẹp này
lượng tử hóa giá trị thành 8 bit ngay cả ở cài đặt chất lượng thấp. (Công tắc này kém
được đặt tên, vì nó không đảm bảo rằng đầu ra thực sự là JPEG cơ sở. Vì
ví dụ, bạn có thể sử dụng - đường cơ sở và --cấp tiến cùng nhau.)
--qtables =thông số tập tin
Sử dụng các bảng lượng tử hóa được đưa ra trong tệp văn bản được chỉ định.
--qslots = n [, ...]
Chọn bảng lượng tử để sử dụng cho từng thành phần màu.
--sample =HxV [, ...]
Đặt hệ số lấy mẫu JPEG cho từng thành phần màu.
--scan =thông số tập tin
Sử dụng tập lệnh quét được cung cấp trong tệp văn bản được chỉ định. Xem bên dưới để biết thông tin về
quét tập lệnh.
Các tùy chọn "wizard" dành cho thử nghiệm với JPEG. Nếu bạn không biết những gì
bạn đang làm, không sử dụng họ. Các công tắc này được ghi lại thêm trong tệp
wizard.doc đi kèm với thư viện JPEG của Nhóm JPEG Độc lập.
VÍ DỤ
Ví dụ này nén tệp PPM foo.ppm với hệ số chất lượng là 60 và lưu
xuất dưới dạng foo.jpg:
pnmtojpeg --quality = 60 foo.ppm > foo.jpg
làm sao foo.bmp | bmptoppm | pnmtojpeg > foo.jpg
GỢI Ý
JFIF không lý tưởng cho phim hoạt hình, bản vẽ đường thẳng và các hình ảnh khác chỉ có một số
màu sắc riêng biệt. Đối với những người đó, hãy thử thay thế pnmtopng or ppmtobmp. Nếu bạn cần chuyển đổi
một hình ảnh như vậy đến JFIF, tuy nhiên, bạn nên thử nghiệm với pnmtojpeg's --chất lượng và
--mịn màng các tùy chọn để có được một chuyển đổi thỏa đáng. --mịn màng 10 hoặc như vậy thường hữu ích.
Nén JPEG đáng chú ý là "mất mát". Điều này có nghĩa là, không giống như hầu hết
chuyển đổi đồ họa, bạn sẽ mất thông tin, có nghĩa là chất lượng hình ảnh, khi bạn chuyển đổi thành
JFIF. Nếu bạn chuyển đổi từ PPM sang JFIF và quay lại nhiều lần, chất lượng hình ảnh sẽ giảm
tích trữ. Sau mười chu kỳ hoặc lâu hơn, hình ảnh có thể xấu hơn đáng kể so với sau
một chu kỳ.
Do đó, bạn nên thực hiện tất cả các thao tác bạn phải làm trên hình ảnh trong một số
định dạng khác và chuyển đổi sang JFIF như bước cuối cùng. Và nếu bạn có thể giữ một bản sao trong
định dạng ban đầu, vì vậy càng nhiều càng tốt. PNG là một lựa chọn tốt cho định dạng không mất dữ liệu,
nhưng khá nhỏ gọn. GIF là một cách khác để thực hiện, nhưng rất có thể bạn không thể tạo GIF
hình ảnh mà không mắc nợ Unisys và IBM, những người sở hữu bằng sáng chế trên LZW
nén được sử dụng ở định dạng GIF.
--tối ưu hóa tùy chọn để pnmtojpeg đáng sử dụng khi bạn đang tạo phiên bản "cuối cùng"
để đăng hoặc lưu trữ. Đó cũng là một chiến thắng khi bạn sử dụng cài đặt chất lượng thấp để tạo
các tệp JFIF rất nhỏ; tỷ lệ phần trăm cải thiện thường nhiều hơn rất nhiều so với tỷ lệ phần trăm lớn hơn
các tập tin. (Hiện tại, --tối ưu hóa chế độ tự động có hiệu lực khi bạn tạo
tệp JPEG liên tục).
Một chương trình khác, cjpeg, tương tự. cjpeg được duy trì bởi Nhóm JPEG Độc lập và
được đóng gói với thư viện JPEG pnmtojpeg sử dụng cho tất cả các công việc JPEG của nó. Bởi vì
điều đó, bạn có thể mong đợi nó khai thác nhiều tính năng JPEG hiện tại hơn. Ngoài ra, vì bạn phải
có thư viện để chạy pnmtojpeg, nhưng không phải ngược lại, cjpeg có thể phổ biến hơn
có sẵn.
Mặt khác, cjpeg không sử dụng thư viện NetPBM để xử lý đầu vào của nó, vì tất cả
các công cụ NetPBM chẳng hạn như pnmtojpeg làm. Điều này có nghĩa là nó ít có khả năng nhất quán với
tất cả các chương trình khác xử lý các định dạng NetPBM. Ngoài ra, cú pháp lệnh của
pnmtojpeg nhất quán với công cụ Netpbm khác, không giống như cjpeg.
SCAN KỊCH BẢN
Sử dụng -quét tùy chọn để chỉ định một tập lệnh quét. Hoặc sử dụng -cấp tiến tùy chọn để chỉ định
một tập lệnh quét tích hợp cụ thể.
Tập lệnh quét là gì và định dạng cơ bản của tệp tập lệnh quét, được bao gồm trong
các thuật sĩ.doc tệp đi kèm với thư viện JPEG của Tập đoàn JPEG độc lập. Quét
tập lệnh giống nhau cho pnmtojpeg như là cho cjpeg.
Phần này chứa thông tin bổ sung không phải, nhưng có lẽ nên có, trong đó
tài liệu.
Đầu tiên, có nhiều hạn chế đối với tập lệnh quét hợp lệ là gì. Thư viện JPEG và
do đó pnmtojpeg, kiểm tra kỹ lưỡng xem có bất kỳ sự thiếu tuân thủ nào với những hạn chế này không, nhưng
không cho bạn biết kịch bản không tuân thủ như thế nào. Các thông điệp rất chung chung và
đôi khi không đúng sự thật.
Để bắt đầu, các mục nhập cho hệ số DC phải đứng trước bất kỳ mục nhập nào cho AC
các hệ số. Hệ số DC là Hệ số 0; tất cả các hệ số khác là AC
các hệ số. Vì vậy, trong một mục nhập cho hệ số DC, hai số sau dấu hai chấm phải
là 0 và 0. Trong mục nhập cho hệ số AC, số đầu tiên sau dấu hai chấm không được
0.
Trong mục nhập DC, các thành phần màu phải theo thứ tự tăng dần. Ví dụ: "0,2,1" trước
dấu hai chấm sai. "0,0,0" cũng vậy.
Trong mục nhập cho hệ số AC, bạn phải chỉ định một thành phần màu. Tức là ở đó
chỉ có thể là một số trước dấu hai chấm.
Trong mục nhập đầu tiên cho một hệ số cụ thể cho một thành phần màu cụ thể, "Ah"
giá trị phải bằng XNUMX, nhưng giá trị Al có thể là bất kỳ số bit hợp lệ nào. Trong các mục tiếp theo,
Ah phải là giá trị Al từ mục nhập trước đó (đối với hệ số cho màu đó
thành phần), và giá trị Al phải nhỏ hơn một giá trị Ah.
Tập lệnh cuối cùng phải chỉ định ít nhất một số hệ số DC cho mọi màu
thành phần. Nếu không, bạn sẽ nhận được thông báo lỗi "Tập lệnh không truyền tất cả dữ liệu."
Bạn không cần chỉ định tất cả các bit của hệ số DC hoặc bất kỳ hệ số AC nào.
Có một tùy chọn tiêu chuẩn trong việc xây dựng thư viện JPEG để bỏ qua khả năng quét tập lệnh.
Nếu vì lý do nào đó mà thư viện của bạn được tạo bằng tùy chọn này, bạn sẽ nhận được thông báo "Đã yêu cầu
tính năng đã bị bỏ qua tại thời điểm biên dịch. "
MÔI TRƯỜNG
JPEGMEM
Nếu biến môi trường này được đặt, giá trị của nó là giới hạn bộ nhớ mặc định. Các
giá trị được chỉ định như được mô tả cho --bộ nhớ tối đa Lựa chọn. Một cách rõ ràng
--bộ nhớ tối đa tùy chọn ghi đè bất kỳ JPEGMEM.
Sử dụng pnmtojpeg trực tuyến bằng các dịch vụ onworks.net