"Tôi muốn thay đổi DPI bằng Imagemagick mà không thay đổi kích thước byte thực tế của dữ liệu hình ảnh."
Điều này là hoàn toàn không thể!
Bởi vì:
more "Dots per Inch"
<==> more pixels per area
<==> more total pixels per image
<==> more total bytes per image
Ngoài ra, bạn dường như không hiểu DPI trong thực tế là gì:
- Đó là một giá trị hoàn toàn trừu tượng chỉ nhận được giá trị thực tế trong bối cảnh biết cả kích thước tuyệt đối của bản in hoặc kết xuất trên màn hình hoặc màn hình:
- Bạn có thể 'in' hình ảnh 72x72 pixel rất giống nhau trên một hình vuông rộng 1 inch: bản in sẽ có độ phân giải
72dpi
.
- Bạn cũng có thể 'in' nó trên một hình vuông rộng 1/4 inch: sau đó bản in sẽ có độ phân giải
288dpi
.
- ( Lưu ý: Nếu bạn 'in' nó
288dpi
trên hình vuông 1 inch, nó không còn là hình ảnh giống nhau: nó sẽ trải qua một số phép ngoại suy thông qua trình điều khiển máy in hoặc một số cơ chế lọc khác và nó sẽ trở thành hình ảnh 288x288 pixel thay vì hình ảnh 72x72 pixel ... )
- Cả hai bản in sẽ có thông tin hình ảnh rất giống nhau - hình ảnh 288dpi sẽ không đột nhiên có nhiều hơn.
Nếu bạn muốn in 72x72 pixel gốc hình ảnh như 1 inch rộng vuông, nhưng ít 288dpi
, sau đó bạn sẽ phải rescale hình ảnh (trong trường hợp này nhân rộng nó lên). Đối với mỗi 1 pixel trong bản gốc, bạn sẽ cần 4 pixel của hình ảnh mới, được nâng cấp. Bây giờ có các thuật toán khác nhau có thể được sử dụng để tính toán giá trị màu nào cho 4 pixel này (3 trong số chúng là pixel mới) nên có:
- bạn có thể cung cấp cho chúng giống như pixel gốc (là thuật toán rất "thô",
- hoặc bạn có thể thực hiện một số giá trị trung bình của giá trị màu của pixel gốc với các giá trị màu của các pixel lân cận.
Trong mọi trường hợp, bạn đang tạo một hình ảnh lớn hơn bao gồm 288 hàng pixel, mỗi pixel cao 288 pixel (288x288 pixel).
Những gì Gimp làm cho bạn khi bạn trải qua "Hình ảnh -> Kích thước in": nó đơn giản hóa quá trình tính toán lại các thay đổi cần thiết trong kích thước pixel tuyệt đối, làm cho nó thân thiện hơn với người dùng. Vì mục đích này...
- ... trước tiên, bạn hỏi bạn về DPI vì một máy in nhất định không thể thay đổi độ phân giải in tùy ý (một số có thể cung cấp không chỉ một, mà thậm chí có thể 2 hoặc 3 độ phân giải khác nhau). Vì vậy, nó hỏi bạn ở độ phân giải bạn muốn in. Đó là thông tin đầu tiên.
- ... sau đó nó cũng yêu cầu các mảnh thứ hai của thông tin: tại mà kích thước (trong
cm
, mm
hoặc inch
) các bản in sẽ xuất hiện trên giấy.
Theo hai mẩu thông tin này, Gimp sau đó tính toán tổng số pixel mà nó phải sử dụng (ngoại suy từ số pixel ban đầu) để lấp đầy không gian được yêu cầu ở độ phân giải được yêu cầu.
Tuy nhiên, việc nhân rộng một hình ảnh raster bằng cách làm cho nó chứa nhiều pixel hơn sẽ không thêm thông tin thực vào nó và nó chỉ thêm "chất lượng" cho nó là hư cấu. Nó có thể trông đẹp hơn mắt người nếu thuật toán mở rộng của bạn là một 'tốt'. Và nó sẽ trông xấu, nếu bạn chỉ tăng gấp đôi, gấp ba hoặc gấp bốn pixel hiện có, giống như một số thuật toán đơn giản làm.
Đối với hình ảnh raster,
cài đặt DPI chỉ có liên quan trong bối cảnh in hoặc hiển thị nó. Bởi vì máy in hoặc màn hình đã cho, độ phân giải cố định. Do đó, thông tin chỉ ...
- ... trình điều khiển máy in hoặc
- ... một ứng dụng xử lý ảnh hỗ trợ in
cần phải biết.
Và tài liệu của ImageMagick hoàn toàn đồng ý với tôi:
-density width
-density widthxheight
Đặt độ phân giải ngang và dọc của hình ảnh để hiển thị cho các thiết bị.
Đối với hình ảnh vector hoặc định dạng tệp
(như PDF hoặc PostScript), tuy nhiên, cài đặt DPI cực kỳ quan trọng trong bối cảnh raster hóa chúng. DPI cao hơn sẽ chuyển nhiều thông tin hình ảnh hơn sang định dạng raster và do đó bảo tồn nhiều chi tiết hơn từ chất lượng ban đầu thực sự. Khi chuyển đổi một hình ảnh vector của một kích thước nhất định trongmm
,cm
hoặcinch
vào raster với DPI cao hơn sẽ trực tiếp chuyển thành một số cao hơn tổng số điểm ảnh trong hình ảnh.
Ngoài ra, ImageMagick không hỗ trợ 'in' như vậy. Thay vào đó, ImageMagick chỉ ...
- ... chuyển đổi các tập tin từ một định dạng raster nhất định sang các định dạng raster khác;
- ... hoặc nó thu nhỏ hoặc thu nhỏ hình ảnh raster;
- ... Hoặc nó thay đổi giá trị màu theo một thuật toán cụ thể;
- ... Hoặc nó cắt hình ảnh, phủ chúng, đảo ngược chúng, phản chiếu chúng;
- ... và những gì không ....
... Nhưng để in các hình ảnh bị thao túng, bạn cần sử dụng một chương trình khác.
Một số định dạng hình ảnh (TIFF, PNG, ...) không hỗ trợ lưu trữ cài đặt DPI bên trong dữ liệu meta của chúng.
Nhưng đây không phải là một thuộc tính 'gợi ý' không làm thay đổi hình ảnh raster bên dưới. Đó là lý do tại sao bạn thực hiện khám phá này:
"Khi tôi kiểm tra tập tin, nó vẫn giữ nguyên."
'Gợi ý' này có thể có thể được đánh giá tự động bởi trình điều khiển máy in hoặc bằng các chương trình tạo trang như LaTeX. Trong trường hợp không có 'gợi ý' của DPI như vậy (hoặc nếu bằng cách nào đó họ không thể hiện bản thân theo cách LaTeX mong đợi họ làm), LaTeX vẫn có thể được lệnh hiển thị bất kỳ hình ảnh cụ thể nào trên trang theo cách mà người ta mong đợi để - nó chỉ cần một số mã LaTeX rõ ràng hơn xung quanh hình ảnh!
Một số định dạng hình ảnh khác (JPEG (?), BMP, ...) thậm chí không hỗ trợ lưu trữ gợi ý DPI tại dữ liệu meta bên trong của chúng.
Vì vậy, Gimp chỉ hỗ trợ những gì bạn thấy với "Hình ảnh -> Kích thước in" vì nó muốn in một hình ảnh. Với ImageMagick bạn không thể in.
Tiếp tục làm những gì bạn muốn làm với Gimp khi bạn in. Nó không có ý nghĩa với ImageMagick.
Xem thêm đoạn tài liệu IM bổ sung này , giải thích cùng một chủ đề bằng các từ khác nhau.
Vì vậy, những gì còn lại là đây:
- Nếu bạn 'thao tác' hình ảnh của mình bằng Gimp, rồi nhúng kết quả vào LaTeX, trang sẽ trông giống như bạn mong đợi.
- Nếu bạn 'thao tác' hình ảnh của mình bằng ImageMagick, sau đó nhúng kết quả vào LaTeX, trang sẽ trông không như bạn mong đợi.
Vui lòng cung cấp các thông tin sau để giải quyết vấn đề trên:
- phiên bản chính xác của cài đặt ImageMagick của bạn (đầu ra hoàn chỉnh
convert -version
và convert -list configure
);
- (một liên kết đến một) hình ảnh mẫu ban đầu;
- (một liên kết đến) cùng một hình ảnh được thao tác bởi Gimp;
- (một liên kết đến) cùng một hình ảnh được thao tác bởi ImageMagick.
Bằng cách này chúng ta có thể giúp giải quyết vấn đề.
Nhưng lưu ý: đây là một vấn đề khác với những gì chủ đề / tiêu đề hiện tại của bạn yêu cầu: "Tôi muốn thay đổi DPI bằng Imagemagick mà không thay đổi kích thước byte thực của dữ liệu hình ảnh"
Cập nhật
Vì vẫn chưa rõ ràng với một số độc giả những gì tôi đã lưu ý ở trên, đây là một nỗ lực nữa ...
Bất cứ điều gì được ghi chú là 'Độ phân giải' hoặc 'Mật độ' trong tệp hình ảnh, đều là thuộc tính siêu dữ liệu . Nó không ảnh hưởng đến số lượng pixel thực tế được mô tả bởi tệp và hoàn toàn không liên quan về mặt này. Nó chỉ là một gợi ý mà một thiết bị in hoặc kết xuất hoặc ứng dụng có thể hoặc không thể làm theo khi in, kết xuất hoặc hiển thị hình ảnh.
Đối với mục đích này, nó chỉ là một vài số được lưu trữ trong tệp hình ảnh. Những con số này cho biết các thiết bị đầu ra như máy in và hiển thị bao nhiêu chấm (hoặc pixel) trên mỗi inch hình ảnh sẽ được hiển thị tại. Đối với các định dạng vectơ như PostScript, PDF, MWF và SVG, nó cho biết tỷ lệ pixel để vẽ bất kỳ tọa độ thế giới thực nào được sử dụng bởi hình ảnh.
Một ví dụ, trong đó giá trị độ phân giải được ImageMagick lưu ý bên trong siêu dữ liệu hình ảnh KHÔNG được vinh danh bởi một ứng dụng là Adobe Photoshop. Photoshop lưu trữ các gợi ý về độ phân giải in hoặc hiển thị mong muốn trong một cấu hình độc quyền có tên 8bim . ImageMagick không chạm vào hồ sơ này, ngay cả khi được yêu cầu viết thay đổi độ phân giải thành siêu dữ liệu của tệp hình ảnh. Mặt khác, Photoshop sẽ bỏ qua tất cả các gợi ý về độ phân giải được ImageMagick lưu trữ trong trường siêu dữ liệu tiêu chuẩn khác được xác định cho mục đích này ngay khi nhìn thấy hồ sơ 8bim của chính nó .
OP nên chọn tiêu đề:
- 'Tôi muốn thay đổi DPI (gợi ý độ phân giải siêu dữ liệu) bằng ImageMagick mà không thay đổi số pixel thực tế trong ảnh'
để tránh mọi hiểu lầm ...
^
biểu tượng nhỏ bên trái câu trả lời của anh ấy), không chỉ 'chấp nhận' ngay khi bạn có đủ danh tiếng cá nhân (tôi nghĩ bạn cần +15) ...