2009-08-23 14 views
7

tôi đã cố mở một số tệp JPEG trong Delphi bằng thành phần TImage. tôi cũng đã thêm đơn vị Jpeg. tôi có thể mở hầu hết các tệp jpg và không có vấn đề gì.Sự cố khi hiển thị một số tệp JPG trong Delphi

nhưng khi tôi cố gắng mở một số JPG, chương trình chỉ cần ném một ngoại lệ.

tôi cũng đã cố gắng tải hình ảnh đó ở chế độ thiết kế, nhưng có một số vấn đề. ở chế độ thiết kế, ngoại lệ là:

Vi phạm truy cập tại địa chỉ 402672A1 trong mô-đun 'vcljpeg70.bpl'. Viết địa chỉ 08E84000

Tại sao tôi không thể mở JPG? chúng không bị hỏng. tôi đã kiểm tra chúng trong một số công cụ như trình xem EXIF ​​savantools.

đây là URL của một trong những hình ảnh đó: http://xs842.xs.to/xs842/09340/backpic435.jpg

Cảm ơn rất nhiều

PS: phiên bản Delphi của tôi là 7. Borland Delphi 7

+0

Isaac xem phản hồi về CMYK và Delphi;) – RRUZ

+0

Isaac: Bạn không chỉ định phiên bản Delphi (một phần quan trọng của câu hỏi như thế này), nhưng liên kết RRUZ cung cấp dưới đây giải quyết vấn đề cho Delphi 5 - BDS2006. Nhóm Delphi nên hỗ trợ mở các jpg phổ biến, ngay cả khi chúng không chuẩn. – Argalatyr

+0

Có ai đó có mã để phát hiện rằng hình ảnh đã được lưu dưới dạng CMYK không? –

Trả lời

12

Lý do bạn có thể gặp phải vấn đề này là do loại tệp. Delphi có vấn đề hiển thị hình ảnh JPEG đã được mã hóa bằng CMYK, thay vì mã hóa RGB mặc định. CMYK là một định dạng thường được sử dụng cho thiết kế in, hãy thử và luôn mã hóa hình ảnh của bạn thành định dạng RGB để tránh vấn đề này với Delphi.

Patch cho Delphi jpeg.dcu

Bye.

+0

Cửa hàng in thương mại đang chuyển sang RGB (hoặc hương vị của chúng như sRGB) do sự thống trị của định dạng RGB và giá trị ngày càng tăng mà chúng nhận được từ màn hình trực tuyến. – Argalatyr

+1

+1 cho liên kết đến bản vá đó - tiện dụng để biết. – robsoft

+0

Nó thực sự giải quyết vấn đề của tôi! Nhưng màu sắc của hình ảnh là một vài khác biệt so với những gì Microsoft Picture and Fax Viewer hiển thị. Tôi nghĩ điều này là do công cụ Quản lý màu. – Isaac

1

tôi nhận được lỗi tương tự. Điều này dường như là một lỗi trong lib JPEG của Delphi. Bạn nên báo cáo nó cho QC.

2

Kiểm tra thư viện Hình ảnh miễn phí để được hỗ trợ JPEG thay thế ở Delphi nếu người bản xứ gặp sự cố. Hình ảnh miễn phí là một lib nguồn mở cho phép bạn làm việc với JPEG/PNG/... từ Delphi/BCB/và những người khác. IMHO thư viện rất đẹp.

http://freeimage.sourceforge.net/

+0

Cảm ơn nhưng IMHO thực sự là một thư viện lớn. là có bất kỳ thư viện/thành phần đơn giản hơn để chỉ hiển thị hình ảnh (giống như TImage) không? – Isaac

6

Thú vị. Không phải Internet Explorer cũng không Google Chrome sẽ hiển thị hình ảnh JPEG mà bạn đã liên kết. Tôi không nhận được 404 Không tìm thấy lỗi, tôi chỉ nhận được một trình giữ chỗ hình ảnh, cho biết hình ảnh không thể mở/hiển thị chính xác.

FireFoxhiện hiển thị hình ảnh.

Bạn có chắc chắn rằng không có thứ gì đó có tanh, hoặc ít nhất là hơi khác thường, về các tệp JPG có liên quan không?

UPDATE: Các tập tin liên quan đến trong câu hỏi mở trong PaintShop Pro (một cài đặt cũ phiên bản 6.0) - nếu tôi sau đó chỉ cần lưu lại như một tiêu chuẩn mã hóa JPEG, IEChrome cả hiển thị hình ảnh mới được lưu như tôi mong đợi. Chắc chắn sẽ xuất hiện một thứ gì đó "kỳ cục" về việc mã hóa JPEG gốc mà một số ứng dụng JPEG có thể xử lý nhưng không phải tất cả, bao gồm một số "người chơi chính", không chỉ là Delphi. :)

+0

Safari cũng hiển thị hình ảnh. Vấn đề thú vị. Tôi nghĩ rằng tôi đã tìm thấy điều này một lần hoặc hai lần trước với IE không hiển thị jpegs nhất định, và luôn luôn (không chính xác) giả định rằng có một vấn đề với các tập tin jpeg chính nó. – robsoft

+0

cảm ơn bạn đã cân nhắc! tôi hỏi câu hỏi này là một số diễn đàn "chuyên gia", nhưng không ai trả lời tôi. Stack Overflow thực sự tuyệt vời! về câu trả lời của bạn: bạn đã đúng. tôi cũng nghĩ có gì đó sai với jpeg! nhưng có rất nhiều jpegs như thế này mà tôi phải thể hiện. vì vậy, tôi không thể sửa đổi hoặc sửa chúng. tôi phải chỉ cho họ như họ đang có. "Windows Picture and Fax Viewer" có thể hiển thị chúng, vậy tại sao tôi không thể? – Isaac

2

Tôi đã xem tệp có trình chỉnh sửa hex và tìm thấy 3 tiêu đề JFIF. Sau khi trích xuất từng phần, tôi tìm thấy 2 hình thu nhỏ và một hình ảnh. Không có gì đặc biệt, bởi vì embedded thumbnails seem to be part of the EXIF2 standard.

Các hình thu nhỏ tự tải tốt trong Delphi và chuyển đổi tệp thành tệp có thể đọc được có thể được thực hiện với hầu hết mọi phần mềm mà tôi đã thử.

Dù sao, trang này sẽ cung cấp cho bạn thông tin rất chi tiết về hình ảnh, và những gì tiêu đề là bên trong (chỉ cần dán url của hình ảnh của bạn trong hộp văn bản):

http://www.monster-submit.com/resources/jpeganalyzer/

+0

Cảm ơn rất nhiều. tôi đọc về tiêu chuẩn EXIF2 mà bạn đã nói và nó rất thú vị. nhưng tôi thực sự không muốn rơi vào chi tiết. tôi chỉ muốn tìm một cách để cho thấy rằng JPEG trong Delphi. có lẽ một thành phần đơn giản sẽ giúp tôi. – Isaac

0

SimDesign's NativeJpg có thể mở tệp đó. Đó là một thư viện JPEG được viết hoàn toàn bằng Delphi, và tác giả đã được tốt về việc thêm hỗ trợ cho các phần mở rộng mới và không gian màu khi chúng ta chạy vào chúng. Ngoài một hậu duệ TGraphic cho hỗ trợ TImage, nó cho thấy nhiều giao diện cấp thấp hơn để thao tác với JPEG, mặc dù tôi chưa sử dụng chúng.

+0

Có lẽ đây là một giải pháp tốt khác. Nhưng nó không phải là một thư viện miễn phí. tôi phải trả 49,95 € để hiển thị một jpeg chính xác, trong khi đó jpeg có thể được hiển thị bởi Microsoft Picture and Fax Viewer rồi !! Xin cảm ơn. Ít nhất tôi hiểu Delphi 7 thực sự có vấn đề trong việc hiển thị một số JPEG! ;) – Isaac

+0

Trang tải xuống không còn tồn tại. –

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