Chuyển tới nội dung
Quay lại Blog
khắc phục sự cố
26 tháng 2, 2026
GuruPDF Team
15 phút đọc

Tại sao chuyển đổi ảnh thất bại trên máy tính của bạn (và cách khắc phục mọi lỗi)

HEIC không mở được? ImageMagick báo "no decode delegate"? Python Pillow crash khi gặp RGBA? Hướng dẫn này bao quát mọi lỗi chuyển đổi ảnh thường gặp trên Windows, macOS và Linux — kèm mã lỗi thực tế, giải thích và cách khắc phục dễ nhất.

Chuyển đổi hình ảnh giữa các định dạng nghe có vẻ đơn giản — chỉ cần đổi phần mở rộng, đúng không? Thực tế, mỗi ngày hàng nghìn người dùng gặp lỗi khó hiểu, file đầu ra bị hỏng và phần mềm bị crash khi cố chuyển đổi hình ảnh trên máy tính của mình. Trong khi đó, các công cụ trực tuyến như GuruPDF xử lý chính xác những thao tác chuyển đổi đó một cách hoàn hảo chỉ trong vài giây.

Bài viết này đi sâu vào những lỗi chuyển đổi hình ảnh phổ biến nhất mà mọi người gặp phải trên Windows, macOS và Linux, giải thích vì sao chúng xảy ra, và hướng dẫn cách tránh chúng hoàn toàn.

Các Định Dạng Hình Ảnh Phổ Biến Nhất (và Vì Sao Chúng Không Luôn Tương Thích)

Trước khi đi vào các lỗi, hãy hiểu các định dạng gây nhiều rắc rối nhất:

Format Tên đầy đủ Nén Trong suốt Sử dụng điển hình
JPG/JPEG Joint Photographic Experts Group Lossy No Ảnh, hình ảnh web
PNG Portable Network Graphics Lossless Yes Ảnh chụp màn hình, logo, đồ họa
WebP Web Picture Both Yes Tối ưu hóa web hiện đại
HEIC/HEIF High Efficiency Image Container Lossy/Lossless Yes Ảnh iPhone/iPad (iOS 11+)
AVIF AV1 Image File Format Lossy/Lossless Yes Định dạng web thế hệ mới
SVG Scalable Vector Graphics N/A (vector) Yes Icon, minh họa, logo
TIFF Tagged Image File Format Lossless Yes In ấn, quét, lưu trữ
BMP Bitmap None No Định dạng Windows cũ
GIF Graphics Interchange Format Lossless 1-bit Animation, đồ họa đơn giản
EPS Encapsulated PostScript N/A (vector) No Thiết kế in ấn, đồ họa chuyên nghiệp
DJVU DjVu Lossy No Tài liệu đã quét, sách

Vấn đề? Hầu hết hệ điều hành và công cụ có sẵn chỉ hỗ trợ một số ít định dạng này một cách gốc. Đó là nơi các lỗi bắt đầu.

Lỗi #1: "Windows Photo Viewer Can't Open This Picture" (HEIC/AVIF/WebP)

Các mã lỗi và thông báo bạn có thể thấy:

"Windows Photo Viewer can't open this picture because either Photo Viewer
doesn't support this file format, or you don't have the latest updates."
"It looks like we don't support this file format."
— Microsoft Photos app
"0xc00d5212: This item was encoded in a format that's not supported."

Vì sao xảy ra: Windows 10/11 không hỗ trợ gốc HEIC (định dạng ảnh mặc định của iPhone từ iOS 11) hoặc AVIF. Bạn cần cài "HEIF Image Extensions" ($0.99) và "AV1 Video Extensions" từ Microsoft Store. Hỗ trợ WebP chỉ được thêm từ Windows 10 version 1809 trở đi.

Cách khắc phục tại máy: Cài codec pack, dùng trình xem bên thứ ba, hoặc thử công cụ dòng lệnh như ImageMagick:

bash
magick convert input.heic output.jpg

Nhưng ImageMagick yêu cầu cài thêm các delegate (libheif, libde265) — thao tác này thường thất bại với:

convert: delegate failed `"dwebp" -pam "%i" -o "%o"' @ error/delegate.c/InvokeDelegate/1911.
convert: no decode delegate for this image format `HEIC' @ error/constitute.c/ReadImage/746.

Cách dễ: Tải file HEIC, AVIF hoặc WebP lên GuruPDF và chuyển sang JPG hoặc PNG chỉ với một cú nhấp — không cần codec, không cần cài đặt, không lỗi.

Lỗi #2: "No Decode Delegate" — ImageMagick Thiếu Codec

Thông báo lỗi đầy đủ:

convert: no decode delegate for this image format `WEBP' @ error/constitute.c/ReadImage/746.
convert: no decode delegate for this image format `SVG' @ error/constitute.c/ReadImage/746.
convert: no decode delegate for this image format `EPS' @ error/constitute.c/ReadImage/746.

Vì sao xảy ra: ImageMagick là một trong những công cụ hình ảnh dòng lệnh phổ biến nhất, nhưng không bao gồm bộ giải mã cho mọi định dạng ngay từ đầu. Mỗi định dạng cần một thư viện "delegate":

  • WebP yêu cầu libwebp
  • HEIC yêu cầu libheif + libde265
  • AVIF yêu cầu libavif + dav1d
  • SVG yêu cầu librsvg hoặc Inkscape
  • EPS yêu cầu Ghostscript (gs)
  • DJVU yêu cầu djvulibre

Cài những thư viện này trên Windows đặc biệt đau đầu — bạn phải tải DLL đã biên dịch sẵn, đặt chúng vào đúng thư mục, rồi hy vọng các phiên bản khớp nhau.

Trên macOS:

bash
brew install imagemagick --with-librsvg --with-libheif --with-webp

Thường thất bại với:

Error: invalid option: --with-librsvg

Vì Homebrew đã thay đổi cấu trúc formula và các tùy chọn này đã bị gỡ bỏ.

Trên Linux (Ubuntu/Debian):

bash
sudo apt install imagemagick libheif-dev libwebp-dev

Vẫn có thể thất bại vì ImageMagick hệ thống được biên dịch mà không có delegate. Bạn sẽ phải biên dịch từ source:

bash
./configure --with-heic=yes --with-webp=yes
make && sudo make install

Việc này có thể mất hơn 10 phút và có thể xung đột với các gói hệ thống.

Lỗi #3: "Not a JPEG File: Starts With 0x89" — Sai Phần Mở Rộng File

Thông báo lỗi:

Not a JPEG file: starts with 0x89 0x50
Corrupt JPEG data: premature end of data segment
libpng error: Not a PNG file
IHDR: CRC error

Vì sao xảy ra: Ai đó đã đổi tên file PNG thành .jpg (hoặc ngược lại). Phần mở rộng không khớp với nội dung nhị phân thực tế. Các byte 0x89 0x50 là magic number của PNG (các byte đầu tiên của mọi file PNG là 89 50 4E 47). File JPEG bắt đầu bằng FF D8 FF.

Điều này xảy ra thường xuyên hơn bạn nghĩ khi:

  • Tải hình ảnh từ web (máy chủ đôi khi đặt sai header Content-Type)
  • Đổi tên hàng loạt file mà không thực sự chuyển đổi chúng
  • Ứng dụng email hoặc nhắn tin âm thầm thay đổi phần mở rộng

Cách nhận diện định dạng thật:

bash
file mysterious-image.jpg
# Output: mysterious-image.jpg: PNG image data, 1920 x 1080, 8-bit/color RGBA

Trên Windows (PowerShell):

powershell
Format-Hex -Path .\image.jpg -Count 4
# If you see 89 50 4E 47, it's actually a PNG
# If you see FF D8 FF, it's a real JPEG

Lợi thế trực tuyến: GuruPDF tự động nhận diện định dạng file thực tế, bất kể phần mở rộng ghi gì, và chuyển đổi chính xác.

Lỗi #4: Lỗi Chuyển Đổi Python Pillow (PIL)

Thông báo lỗi phổ biến:

python
PIL.UnidentifiedImageError: cannot identify image file 'photo.heic'
python
OSError: cannot write mode RGBA as JPEG
python
OSError: cannot write mode P as JPEG
python
PIL.Image.DecompressionBombError: Image size (178956970 pixels) exceeds limit of 89478485 pixels

Vì sao xảy ra: Thư viện Pillow của Python là lựa chọn hàng đầu cho chuyển đổi hình ảnh theo chương trình, nhưng có những hạn chế đáng kể:

  1. Không hỗ trợ HEIC nếu không có pillow-heif (cài đặt riêng, yêu cầu thư viện hệ thống)
  2. RGBA sang JPEG thất bại vì JPEG không hỗ trợ trong suốt — bạn phải chuyển sang RGB trước
  3. Palette mode (P) sang JPEG yêu cầu chuyển sang RGB
  4. Hình ảnh lớn kích hoạt bảo vệ decompression bomb (một tính năng bảo mật)

Đoạn code workaround điển hình mà nhiều người phải vật lộn:

python
from PIL import Image

img = Image.open("photo.png")

# Handle transparency for JPEG output
if img.mode in ('RGBA', 'LA', 'P'):
    background = Image.new('RGB', img.size, (255, 255, 255))
    if img.mode == 'P':
        img = img.convert('RGBA')
    background.paste(img, mask=img.split()[-1])
    img = background

img.save("photo.jpg", "JPEG", quality=95)

Đó là rất nhiều boilerplate chỉ để chuyển đổi một hình ảnh. Và nó vẫn không xử lý được HEIC, AVIF hay WebP nếu không có thư viện bổ sung.

Lỗi #5: Lỗi macOS Preview "Could Not Be Exported"

Thông báo lỗi:

"The document 'image.webp' could not be exported as 'image.png'."
"The file isn't compatible with QuickLook."
"The document could not be opened. The file format is not supported."

Vì sao xảy ra: macOS Preview.app hỗ trợ khá nhiều định dạng, nhưng các phiên bản macOS cũ hơn (trước Ventura) không hỗ trợ WebP hoặc AVIF một cách gốc. Ngay cả trên phiên bản mới hơn, chuyển đổi giữa một số tổ hợp định dạng vẫn thất bại âm thầm hoặc tạo ra file đầu ra bị hỏng.

Các lỗi lệnh sips phổ biến trên macOS:

bash
sips -s format jpeg input.webp --out output.jpg
# Error: Unable to render input.webp as JPEG
# Error 4: no such operation
bash
sips -s format png input.svg --out output.png
# Error: Unable to render SVG

Công cụ sips (Scriptable Image Processing System) được tích hợp sẵn trong macOS nhưng chỉ hỗ trợ một tập định dạng hạn chế: JPEG, TIFF, PNG, GIF, BMP và PICT.

Lỗi #6: Thất Bại Khi Chuyển Đổi Hình Ảnh Bằng FFmpeg

Lỗi phổ biến:

[image2 @ 0x...] Could not open file : output.webp
av_interleaved_write_frame(): Invalid argument
Avi/ASF stream 0 is not an image stream. Use -c:v png/mjpeg/... to encode it.
[svg @ 0x...] Cannot determine type of input
[heic @ 0x...] Unknown decoder 'heic'
Discarding frame which has a bad interlace type

Vì sao xảy ra: FFmpeg chủ yếu là công cụ video, và dù có thể xử lý chuyển đổi hình ảnh, nó yêu cầu hỗ trợ codec cụ thể được biên dịch sẵn. Nhiều phiên bản FFmpeg cài sẵn trên hệ thống thiếu hỗ trợ HEIC/AVIF/WebP.

Lỗi #7: Lỗi Xử Lý Hàng Loạt GIMP

Thông báo lỗi trong console Script-Fu:

Error: ( : 1) eval: unbound variable: file-webp-save
batch command experienced an execution error:
Error: Procedure 'file-heif-load' not found
(gimp:12345): LibGfig-WARNING **: Bad path: /home/user/.gimp-2.10/gfig

Vì sao xảy ra: GIMP cần plugin cho các định dạng mới hơn. Plugin WebP có thể chưa được cài, hỗ trợ HEIF yêu cầu libheif, và hỗ trợ AVIF yêu cầu GIMP 2.10.22+. Xử lý hàng loạt bằng Script-Fu hoặc Python-Fu thêm một lớp phức tạp nữa.

Lỗi #8: "EXIF Data Lost" — Metadata Bị Phá Hủy Khi Chuyển Đổi

Đây không phải thông báo lỗi — đây là mất dữ liệu âm thầm mà nhiều người không nhận ra cho đến khi đã quá muộn.

Những gì bị mất:

  • Cài đặt máy ảnh (khẩu độ, tốc độ cửa trập, ISO)
  • Tọa độ GPS (nơi bức ảnh được chụp)
  • Ngày và giờ bức ảnh được chụp
  • Thông tin bản quyền
  • Hồ sơ màu (sRGB, Adobe RGB, ProPhoto RGB)
  • Hướng (thông tin xoay — dẫn đến ảnh bị nằm ngang)

Các công cụ thường xóa EXIF:

  • Windows Paint (xóa tất cả)
  • Nhiều bộ chuyển đổi trực tuyến (vì lý do "quyền riêng tư", mà không báo cho bạn)
  • ImageMagick (xóa theo mặc định trừ khi bạn dùng cờ -strip để kiểm soát rõ ràng)
  • Python Pillow (yêu cầu xử lý EXIF tường minh với exif=img.info.get('exif', b''))

Vấn đề hướng đặc biệt khó chịu:

Warning: JPEG file has EXIF orientation tag but image data is not rotated.
Auto-rotating image based on EXIF orientation.

Một số công cụ xoay hình ảnh nhưng không cập nhật thẻ EXIF, dẫn đến xoay kép trên một số trình xem và hiển thị đúng trên những trình xem khác.

Lỗi #9: Vấn Đề Không Gian Màu và Hồ Sơ ICC

Thông báo lỗi:

lcms: not a valid ICC profile
color profile 'sRGB IEC61966-2.1' is not compatible with 'CMYK'
libpng warning: iCCP: known incorrect sRGB profile
JCS_CMYK JPEG image passed to JFIF converter

Vì sao xảy ra: Hình ảnh chuyên nghiệp thường dùng không gian màu CMYK (cho in ấn) hoặc hồ sơ gam rộng (Adobe RGB, ProPhoto RGB). Chuyển những hình này sang định dạng web (dùng sRGB) mà không quản lý màu đúng cách sẽ tạo ra màu bị bạc hoặc quá bão hòa.

Những gì bạn thấy: Một hình ảnh trông hoàn hảo trên màn hình của bạn trở nên xanh neon hoặc nâu đục sau khi chuyển đổi. Hoặc một bức ảnh chuyên nghiệp mất hoàn toàn màu sắc sống động.

Lý do kỹ thuật: CMYK có 4 kênh màu (Cyan, Magenta, Yellow, Key/Black) trong khi RGB có 3 (Red, Green, Blue). Chuyển đổi thô không áp dụng phép biến đổi màu đúng, dẫn đến màu sắc sai lệch nghiêm trọng.

Lỗi #10: Crash "File Too Large" hoặc "Out of Memory"

Thông báo lỗi:

java.lang.OutOfMemoryError: Java heap space
Traceback: MemoryError
Fatal error: Allowed memory size of 134217728 bytes exhausted
convert: cache resources exhausted `input.tiff' @ error/cache.c/OpenPixelCache/3945.
convert: width or height exceeds limit `input.tiff' @ error/cache.c/OpenPixelCache/3912.

Vì sao xảy ra: Một file TIFF 100 MB ở 300 DPI có thể là 8000×6000 pixel. Khi giải nén trong bộ nhớ, đó là:

  • 8000 × 6000 × 4 bytes (RGBA) = 192 MB RAM cho một hình ảnh
  • Xử lý (thay đổi kích thước, chuyển định dạng) cần gấp 2–3 lần lượng đó
  • Chuyển đổi hàng loạt 10 hình như vậy có thể tiêu thụ 4–6 GB RAM

Hầu hết ứng dụng desktop và script không stream-process hình ảnh — chúng nạp toàn bộ vào bộ nhớ cùng lúc.

Giới hạn policy mặc định của ImageMagick thường quá chặt:

# /etc/ImageMagick-6/policy.xml
<policy domain="resource" name="memory" value="256MiB"/>
<policy domain="resource" name="disk" value="1GiB"/>
<policy domain="resource" name="width" value="16KP"/>
<policy domain="resource" name="height" value="16KP"/>

Bạn có thể cần sửa policy.xml để tăng các giới hạn này, nhưng điều đó đòi hỏi quyền admin và hiểu cấu hình XML.

Lỗi #11: Chuyển SVG Sang Raster — Ác Mộng "Text Rendering"

Vấn đề phổ biến:

Pango-WARNING **: failed to choose a font, expect ugly output
rsvg-convert: error: Error reading SVG: "Unexpected end of XML input"
cairo-WARNING: cairo_surface_destroy: Cannot modify an already-finished surface

Vì sao xảy ra: File SVG thường tham chiếu font chưa được cài trên hệ thống của bạn. Khi chuyển sang PNG hoặc JPG, engine render thay bằng font mặc định, hoàn toàn thay đổi cách văn bản trông. Gradient, filter và hình ảnh nhúng trong SVG thêm nhiều điểm thất bại tiềm ẩn.

Ví dụ vấn đề font:

SVG của bạn dùng font-family: "Helvetica Neue", nhưng máy chủ Linux của bạn chỉ có Liberation Sans. Đầu ra trông sai một cách tinh tế — khoảng cách chữ khác, độ đậm khác, văn bản lệch hàng.

Vì Sao Chuyển Đổi Trực Tuyến Vừa Xong (Khi Công Cụ Cục Bộ Không Làm Được)

Sau khi đi qua tất cả những lỗi đó, bạn có thể tự hỏi: vì sao công cụ trực tuyến xử lý những chuyển đổi này mượt đến vậy?

1. Môi trường đã cấu hình sẵn: Các công cụ trực tuyến như GuruPDF chạy trên máy chủ với mọi codec, thư viện và delegate đã được cài và cấu hình đúng. Không thiếu libheif, không sai policy ImageMagick, không thiếu Ghostscript.

2. Tự động nhận diện định dạng: Máy chủ xác định định dạng file thực tế từ header nhị phân (magic bytes), không phải từ phần mở rộng. PNG giả dạng .jpg? Không thành vấn đề.

3. Quản lý màu đúng cách: Công cụ phía máy chủ xử lý hồ sơ ICC và chuyển đổi không gian màu chính xác, giữ nguyên diện mạo hình ảnh của bạn.

4. Quản lý bộ nhớ: Máy chủ đám mây có tài nguyên dồi dào và xử lý hình ảnh hiệu quả, xử lý được file TIFF lớn và bản quét độ phân giải cao mà không hết bộ nhớ.

5. Luôn được cập nhật: Hỗ trợ các định dạng mới như AVIF và HEIC được thêm phía máy chủ. Bạn không cần cập nhật gì trên máy tính.

6. Không đau đầu vì cài đặt: Không môi trường Python, không Homebrew, không DLL hell, không sửa policy.xml, không biên dịch từ source.

Công Cụ Chuyển Đổi Hình Ảnh GuruPDF

GuruPDF hỗ trợ phạm vi chuyển đổi định dạng hình ảnh toàn diện, tất cả miễn phí và chạy trên trình duyệt:

Từ ảnh và hình ảnh:

Định dạng vector và chuyên biệt:

Công cụ tối ưu hóa:

Kết Luận: Đừng Đấu Với Máy Tính Nữa

Nếu bạn từng mất 30 phút cố cài libheif trên Windows, hoặc tự hỏi vì sao TIFF CMYK của mình trông xanh sau khi chuyển sang JPG, hoặc bối rối trước lỗi "no decode delegate" — bạn không đơn độc. Chuyển đổi hình ảnh nên đơn giản, nhưng các công cụ cục bộ khiến nó phức tạp một cách không cần thiết.

Lần tới khi cần chuyển đổi hình ảnh, hãy thử tải lên GuruPDF trước. Nó xử lý mọi định dạng, giữ chất lượng, và hoạt động trên mọi trình duyệt, mọi thiết bị. Không cài đặt, không mã lỗi, khôngfrustrating.

Thời gian của bạn nên dành cho công việc thực sự, không phải gỡ lỗi delegate ImageMagick.