Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
894
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как конвертировать изображения между CMYK и RGB в ColdFusion (Java)?
У меня есть потребность конвертировать изображения из CMYK в RGB - не обязательно обратно, но эй, если это можно сделать...
С выпуском ColdFusion 8 мы получили тег CFImage , но он не поддерживает это преобразование; так же как и Image.cfc, или компонент изображения Alagad .
Однако это должно быть возможно в Java; который мы можем использовать через CF. Например, вот как можно создать поток Java для спящего процесса:
<cfset jthread = createObject("java", "java.lang.Thread")/>
<cfset jthread.sleep(5000)/>
Я бы предположил, что подобный метод может быть использован для использования java для преобразования этого изображения, но не будучи разработчиком Java, я не знаю, с чего начать. Может ли кто-нибудь помочь здесь?
Очень простая формула для преобразования из CMYK в RGB без учета всех цветовых профилей-это:
R = ( (255-C)*(255-K) ) / 255;
G = ( (255-M)*(255-K) ) / 255;
B = ( (255-Y)*(255-K) ) / 255;
Этот код требует, чтобы CMYK значения были в ярости 0-255. Если у вас есть от 0 до 100 или от 0.0 до 1.0, вам придется конвертировать значения.
Надеюсь, это поможет вам начать работу.
Что касается сопряжения java и ColdFusion, то мне очень жаль, но я понятия не имею, как это сделать.
Я использую библиотеки Java ImageIO (https://jai-imageio.dev.java.net). Они не идеальны, но могут быть простыми и выполнять свою работу. Что касается преобразования из CMYK в RGB, вот лучшее, что я смог придумать.
Загрузите и установите библиотеки ImageIO JARs и native для своей платформы. Нативные библиотеки очень важны. Без них файлы ImageIO JAR не смогут обнаружить изображения CMYK. Изначально у меня было впечатление, что нативные библиотеки улучшат производительность, но не будут необходимы для какой-либо функциональности. Но я ошибся.
Единственное, что я заметил, это то, что преобразованные изображения RGB иногда намного легче, чем изображения CMYK. Если кто-то знает, как решить эту проблему, я был бы признателен.
Ниже приведен некоторый код для преобразования изображения CMYK в изображение RGB любого поддерживаемого формата.
Спасибо,
Рэнди 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;
}
}
Я знаю, что этот вопрос стар, но я все еще сталкиваюсь с проблемами с CMYK изображениями & ColdFusion. Однако я просто прочитал изображение CMYK JPEG с помощью ColdFusion 10 и повторно сохранил его. Сохраненное изображение удалось прочитать с помощью ColdFusion 9 (который способен только читать RGB JPEGs.) Я не уверен, является ли это преобразование преднамеренным или нет, и в настоящее время у меня нет никакого способа определить, является ли цветовой профиль исходного изображения CMYK или нет, поскольку сохраненный цветовой профиль все еще кажется тем же самым.
<cfset imgData = ImageRead(expandPath("./CMYK_image.jpg"))>
<cfset ImageWrite(imgData, expandPath("./Saved_image.jpg"))>