Дык вот, на канале #coldfusion довелось понаблюдать за обсуждением данной проблемы и ее решением без установки дополнительных Java-библиотек - хватит и стандартных.
Итак, дабы в полной мере овладеть материалом - предлагаю заранее ознакомиться с документацией по com.sun.image.codec.jpeg.JPEGCodec (сразу предупреждаю, что материал не из самых легких для понимания... но ничего не поделаешь).
Итак, в качестве примера будет использована картинка, которая будет уменьшена в четыре раза - этого хватит для того, чтобы понять сам принцип и уже дальше самому барахтаться... :)
Итак, вот код (заключен в теги cfscript, но тут они вырезаны блоггером)
//это необходимо для дальнейшей работы с JPEG
JpegCodec = createObject("java", "com.sun.image.codec.jpeg.JPEGCodec");
//читаем файл
inputStream = createObject("java", "java.io.FileInputStream").init(expandPath("nissan.jpg"));
outputStream = createObject("java", "java.io.FileOutputStream").init(expandPath("nissan1.jpg"));
//декодируем JPEG
decoder = jpegCodec.createJPEGDecoder(inputStream);
//получаем изображение для масштабирования
image = decoder.decodeAsBufferedImage();
//масштабирует до 1/4 размера
height = round(image.getHeight() /4);
width = round(image.getWidth() / 4);
//это java.awt.image.Image, но нам нужно java.awt.image.BufferedImage!
scaledImage = image.getScaledInstance(JavaCast("int", width), JavaCast("int", height), image.SCALE_DEFAULT);
//создаем новый BufferedImage
newBufferedImage = createObject("java", "java.awt.image.BufferedImage").init(JavaCast("int", width), JavaCast("int", height), image.TYPE_INT_RGB);
//рисуем изображение в буфере
graphics = newBufferedImage.createGraphics();
graphics.drawImage(scaledImage, 0, 0, Javacast("null", ""));
//кодируем рисунок
encoder = jpegCodec.createJPEGEncoder(outputStream); encoder.encode(newBufferedImage);
//закрываем все это дело
outputStream.close();
Собственно показанный пример крайне лаконичен и не требует дополнительных комментариев кроме уже приведенных. Наслаждайтесь! :)
8 комментариев:
не посоветуешь книжек по колдфужену?
и если можно юрлник провайдера который представляет такие услуги =)
Понимаешь, у нас, на русском языке имеются всего две книги:
Рубен Ахаян "Macromedia ColdFusion. Наиболее полное руководство"
и
Роб Брукс-Билсон "Программирование на ColdFusion"
Все эти книги касаются только ColdFusion 5 версии... что сам понимаешь не есть хорошо.
И все. Больше на русском языке ты ничего не найдешь.
У меня парочка современных книг, переведенных в формат chm - если надо, могу заслать:
Одна называется "ADVANCED macromedia® COLDFUSION® MX 7 Application Development" объемом в 1000 страниц, а вторая называется "ColdFusion MX Bible" объемомом в 1250 страниц и в pdf.
Если надо - могу выслать тебе на мыло. Но учти, что весят они соответственно 18 и 9 метров. :)
Что касается хостеров, то известны мне только Арбатек и MTW
спасибо тогда как из командировки вернусь, свяжусь с тобой еще разок, и попрошу послать книжки =)
ОК, пиши! :)
Код работает только с CF7 и выше.
Да, верно. Код работает только в coldfusion mx7. Я просто забыл об этом упомянуть, ибо сейчас работаю только на cfmx7 и иногда забываю, что множество, если не большинство, сидит на cfmx6. :) Моя ошибка... :)
У меня дома тоже CFMX7, а на работе только CFMX6, но лицензионный :)
У меня на работе стоит уже cfmx7 enterprise лицензионный,
дома стоят и семерка и шестерка... правда develeopers edition... :)
Отправить комментарий