una perder pasar negro jpg imagen documento cómo cs6 corel convertir como color cambiar blanco java image coldfusion

perder - ¿Cómo convierto imágenes entre CMYK y RGB en ColdFusion(Java)?



cómo cambiar un documento de rgb a cmyk en photoshop (4)

Tengo la necesidad de convertir imágenes de CMYK a RGB, no necesariamente de nuevo, pero bueno, si puede hacerse ...

Con el lanzamiento de ColdFusion 8, obtuvimos la etiqueta CFImage , pero no es compatible con esta conversión; y tampoco lo hace Image.cfc , o el componente de imagen de Alagad .

Sin embargo, debería ser posible en Java; que podemos aprovechar a través de CF. Por ejemplo, a continuación se explica cómo puede crear un hilo Java para dormir un proceso:

<cfset jthread = createObject("java", "java.lang.Thread")/> <cfset jthread.sleep(5000)/>

Supongo que un método similar podría utilizarse para aprovechar java para hacer esta conversión de imagen, pero al no ser un desarrollador de Java, no tengo ni idea de por dónde empezar. ¿Alguien puede ayudar aquí?


Una fórmula muy simple para convertir de CMYK a RGB ignorando todos los perfiles de color es:

R = ( (255-C)*(255-K) ) / 255; G = ( (255-M)*(255-K) ) / 255; B = ( (255-Y)*(255-K) ) / 255;

Este código requiere que los valores CMYK estén en rabia de 0-255. Si tiene de 0 a 100 o de 0.0 a 1.0, deberá convertir los valores.

Espero que esto te ayude a empezar.

En cuanto a la interfaz Java y ColdFusion, lo siento, pero no tengo idea de cómo hacerlo.


La etiqueta cfx_image puede ser útil para usted. No lo he usado por un tiempo, pero recuerdo que tenía un montón de características.

Alternativamente, es posible que pueda crear secuencias de comandos de una aplicación de Windows, como Irfanview (a través de la línea de comandos usando cfexecute) para procesar imágenes.

Espero que ayude


Uso las bibliotecas de Java ImageIO ( https://jai-imageio.dev.java.net ). No son perfectos, pero pueden ser simples y hacer el trabajo. En cuanto a la conversión de CMYK a RGB, aquí está lo mejor que he podido encontrar.

Descargue e instale los JAR de ImageIO y las bibliotecas nativas para su plataforma. Las bibliotecas nativas son esenciales. Sin ellos, los archivos ImageIO JAR no podrán detectar las imágenes CMYK. Originalmente, tenía la impresión de que las bibliotecas nativas mejorarían el rendimiento pero no eran necesarias para ninguna funcionalidad. Estaba equivocado.

La única otra cosa que noté es que las imágenes RGB convertidas son a veces mucho más livianas que las imágenes CMYK. Si alguien sabe cómo resolver ese problema, lo agradecería.

A continuación se muestra un código para convertir una imagen CMYK en una imagen RGB de cualquier formato compatible.

Gracias,
Randy Stegbauer

package cmyk; import java.awt.color.ColorSpace; import java.awt.image.BufferedImage; import java.awt.image.ColorConvertOp; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import org.apache.commons.lang.StringUtils; public class Main { /** * Creates new RGB images from all the CMYK images passed * in on the command line. * The new filename generated is, for example "GIF_original_filename.gif". * */ public static void main(String[] args) { for (int ii = 0; ii < args.length; ii++) { String filename = args[ii]; boolean cmyk = isCMYK(filename); System.out.println(cmyk + ": " + filename); if (cmyk) { try { String rgbFile = cmyk2rgb(filename); System.out.println(isCMYK(rgbFile) + ": " + rgbFile); } catch (IOException e) { System.out.println(e.getMessage()); } } } } /** * If ''filename'' is a CMYK file, then convert the image into RGB, * store it into a JPEG file, and return the new filename. * * @param filename */ private static String cmyk2rgb(String filename) throws IOException { // Change this format into any ImageIO supported format. String format = "gif"; File imageFile = new File(filename); String rgbFilename = filename; BufferedImage image = ImageIO.read(imageFile); if (image != null) { int colorSpaceType = image.getColorModel().getColorSpace().getType(); if (colorSpaceType == ColorSpace.TYPE_CMYK) { BufferedImage rgbImage = new BufferedImage( image.getWidth(), image.getHeight(), BufferedImage.TYPE_3BYTE_BGR); ColorConvertOp op = new ColorConvertOp(null); op.filter(image, rgbImage); rgbFilename = changeExtension(imageFile.getName(), format); rgbFilename = new File(imageFile.getParent(), format + "_" + rgbFilename).getPath(); ImageIO.write(rgbImage, format, new File(rgbFilename)); } } return rgbFilename; } /** * Change the extension of ''filename'' to ''newExtension''. * * @param filename * @param newExtension * @return filename with new extension */ private static String changeExtension(String filename, String newExtension) { String result = filename; if (filename != null && newExtension != null && newExtension.length() != 0); { int dot = filename.lastIndexOf(''.''); if (dot != -1) { result = filename.substring(0, dot) + ''.'' + newExtension; } } return result; } private static boolean isCMYK(String filename) { boolean result = false; BufferedImage img = null; try { img = ImageIO.read(new File(filename)); } catch (IOException e) { System.out.println(e.getMessage() + ": " + filename); } if (img != null) { int colorSpaceType = img.getColorModel().getColorSpace().getType(); result = colorSpaceType == ColorSpace.TYPE_CMYK; } return result; } }


Sé que esta pregunta es antigua, pero todavía encuentro problemas con las imágenes CMYK y ColdFusion. Sin embargo, acabo de leer una imagen JPEG CMYK con ColdFusion 10 y volver a guardarla. La imagen guardada se pudo leer utilizando ColdFusion 9 (que solo es capaz de leer archivos JPEG RGB). No estoy seguro de si esta conversión es intencional o no y actualmente no tengo ninguna forma de identificar si la imagen de origen está el perfil de color es CMYK o no, ya que el perfil de color guardado aún parece ser el mismo.

<cfset imgData = ImageRead(expandPath("./CMYK_image.jpg"))> <cfset ImageWrite(imgData, expandPath("./Saved_image.jpg"))>