2009-08-23 12 views
7

He intentado abrir algunos archivos JPEG en Delphi con el componente TImage. también agregué la unidad Jpeg. Puedo abrir la mayoría de los archivos jpg y no hay ningún problema.Problema al mostrar algunos archivos JPG en Delphi

pero cuando intento abrir algunos archivos JPG, el programa acaba de lanzar una excepción.

También traté de cargar esas imágenes en modo de diseño, pero hay algún problema. en modo de diseño, la excepción es:

Infracción de acceso en la dirección 402672A1 en el módulo 'vcljpeg70.bpl'. Escribir de la dirección 08E84000

¿Por qué no puedo abrir ese JPG? ellos no están corruptos Los revisé en algunas herramientas como savantools EXIF ​​viewer.

aquí es la dirección URL de una de las imágenes que: http://xs842.xs.to/xs842/09340/backpic435.jpg

, gracias tanto

PS: Mi versión de Delphi es 7. Borland Delphi 7

+0

Isaac ver la respuesta sobre CMYK y Delphi;) – RRUZ

+0

Isaac: No especificó la versión Delphi (una parte importante de una pregunta como esta), pero el enlace RRUZ a continuación resuelve el problema para Delphi 5 - BDS2006. El equipo de Delphi debería admitir la apertura de los jpg prevalentes, incluso si no son estándar. – Argalatyr

+0

¿Alguien ha recibido el código para detectar que la imagen se ha guardado como CMYK? –

Respuesta

12

La razón es posible que encontrar este problema se debe al tipo de archivo. Delphi tiene problemas al mostrar imágenes JPEG que han sido codificadas usando CMYK, en lugar de la codificación RGB predeterminada. CMYK es un formato que generalmente se utiliza para el diseño de impresión, intente y siempre codifique sus imágenes en formato RGB para evitar este problema con Delphi.

Parche para Delphi jpeg.dcu

adiós.

+0

Las imprentas comerciales están cambiando a RGB (o a sabores de las mismas, como sRGB) debido al predominio del formato RGB y al valor cada vez mayor que obtienen de la visualización en línea. – Argalatyr

+1

+1 para el enlace a ese parche, útil para conocer. – robsoft

+0

Realmente resolvió mi problema! Pero los colores de las imágenes son diferentes de lo que muestra Microsoft Picture and Fax Viewer. Creo que esto se debe a cosas de gestión del color. – Isaac

1

consigo el mismo error. Esto parece ser un error en la lib de JPEG de Delphi. Debe informarlo al control de calidad.

2

Echa un vistazo a la biblioteca de imágenes gratuita para obtener soporte JPEG alternativo en Delphi si el nativo tiene problemas. Free Image es una lib de código abierto que te permite trabajar con JPEG/PNG/... desde Delphi/BCB/y otros. Muy buena biblioteca en mi humilde opinión.

http://freeimage.sourceforge.net/

+0

Gracias pero en mi humilde opinión es realmente una gran biblioteca. ¿hay alguna biblioteca/componente más simple para solo mostrar imágenes (al igual que TImage)? – Isaac

6

interesante. Ni Internet Explorer ni Google Chrome mostrará esa imagen JPEG a la que se haya vinculado. No obtengo 404 No encontrado errores, simplemente obtengo un marcador de posición de imagen, lo que indica que la imagen no se pudo abrir/mostrar correctamente.

FireFoxhace mostrar la imagen.

¿Está seguro de que no hay algo sospechoso, o al menos algo inusual, sobre los archivos JPG involucrados?

ACTUALIZACIÓN: El archivo vinculado en la pregunta se abre en Pro (una vieja instalación de la versión 6.0) PaintShop - si luego simplemente volver a guardar como un estándar de codificación JPEG, IE y Chrome tanto mostrar la imagen recién guardada como era de esperar Definitivamente, parece haber algo un poco "raro" sobre la codificación del JPEG original que algunas aplicaciones JPEG pueden manejar, pero no todas, incluyendo algunos "jugadores importantes", no solo Delphi. :)

+0

Safari muestra la imagen bien, también. Problema interesante. Creo que he encontrado esto una o dos veces antes con IE que no muestra ciertos jpegs, y siempre (incorrectamente) supuse que había un problema con el archivo jpeg en sí mismo. – robsoft

+0

gracias por la consideración! hice esta pregunta en algunos foros de "expertos", pero nadie me respondió. ¡Stack Overflow es realmente genial! sobre su respuesta: tiene razón. También creo que hay algo mal con jpeg! pero hay muchos jpegs como este que tengo que mostrar. entonces, no puedo modificarlos ni corregirlos. Debo mostrarlos tal como son. "Visor de imágenes y fax de Windows" puede mostrarlos, ¿por qué no puedo? – Isaac

2

He visto el archivo con un editor hexadecimal, y he encontrado 3 encabezados JFIF. Después de extraer cada parte, encontré 2 miniaturas y una imagen. Nada especial, porque embedded thumbnails seem to be part of the EXIF2 standard.

Las miniaturas se cargan bien en Delphi, y la conversión del archivo a algo legible se puede hacer con casi todos los programas que he probado.

De todos modos, esta página le dará información muy detallada acerca de la imagen, y qué cabeceras están en el interior (basta con pegar la URL de la imagen en el cuadro de texto):

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

+0

Muchas gracias. Leí acerca del estándar EXIF2 que me contó y fue muy interesante. pero realmente no quiero caer en detalles. Solo quiero encontrar una manera de mostrar los archivos JPEG en Delphi. tal vez un componente simple me ayudaría. – Isaac

0

SimDesign NativeJpg puede abrir ese archivo. Es una biblioteca JPEG escrita completamente en Delphi, y el autor ha sido bueno al agregar soporte para nuevas extensiones y espacios de color cuando nos encontramos con ellos. Además de un descendiente de TGraphic para el soporte de TImage, expone muchas interfaces de nivel inferior para manipular archivos JPEG, aunque no los he usado.

+0

Quizás esta sea otra buena solución. Pero no es una biblioteca gratuita. tengo que pagar € 49,95 para mostrar un jpeg correctamente, mientras que ese jpeg ya podría mostrarse con Microsoft Picture y Fax Viewer !! Gracias, sin embargo. ¡Al menos entiendo que Delphi 7 realmente tiene problemas para mostrar algunos archivos JPEG! ;) – Isaac

+0

La página de descarga ya no existe. –

Cuestiones relacionadas