Strix. Нарезание картинок.

Так как на собрании нашей компашки (состав пока являеться секретом) было решено, что сначало карта появиться в растровом виде, то пришлось поискать карту Гродно. Помог мне в этом блог s13.ru, а именно страница с картами. Была взята карта за 2003 год, так как там были подписаны дома. Размеры конечно у неё странные 5376×7872. Получаеться что этих чисел общий делитель 192. У как оказываеться 7872 = 192 х 41. Как так получилось, непонятно. Проведя ловольно простые вычисления решил, что оптимальный размер одного кусочка карты 168 на 164 пикселя. Саму первоначальную карту еще поуменьшать несколько раз в ддва раза с помощью фотошопа оказалось довольно просто. Но вот перспектива резать картинку на такие кусочки ручкамименя не радовала. Я конечно, как программист с самого начала решил написать прожку, которая и резала мне картинку, но для начала решил посикать подобное чудо в интеренете. Ничего не нашел.

После этого загрузил Eclipse (пишу на Java). А как работать с картинками, а именно с JPEG. Ответ можно найти на sun.com в разделе туториалов а именно в tutorial, посвещенный images (простите за неполный перевод, но как точнее сказать не потеряв при этом смысл, я не придумал). Программа получилась довольно простая. Просто берет загружает картинку, и нарезает на кусочки определенного размера. Ни про какую обработку исключений речь и не идёт :). Делалась наскоряк.


package com.krolser.imagespliter;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;


public class Main {

private static void showMessage(String message) {
System.out.println(message);
}

public static void main(String[] args) throws Exception {

if (args.length != 3 && args.length != 4) {
showMessage("use with parameters: <path to image file> <width> <height> [<directory>]");
} else {

showMessage("Check parameter...");

String argFileName = args[0];
int width = Integer.parseInt(args[1]);
int height = Integer.parseInt(args[2]);
String directory = "";
showMessage("Width: " + width + " Height:" + height);
if (args.length == 4) {
directory = args[3];
showMessage("Upload to directory: " + directory);
}

File sourceFile = new File(argFileName);
showMessage("Proces file: " + sourceFile.getName());
String sourceFileName = sourceFile.getName().substring(0, argFileName.length()-4);
String sourceFileExtension = sourceFile.getName().substring(argFileName.length()-3);

System.out.println("Loading file...");
BufferedImage sourceImage = ImageIO.read(sourceFile);
BufferedImage destinationImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics graphics = destinationImage.getGraphics();

int x = 0;
while (x &lt; sourceImage.getWidth()) {
int y = 0;
while (y&lt; sourceImage.getHeight()) {
graphics.drawImage( sourceImage
, 0
, 0
, width - 1
, height - 1
, x
, y
, x + width - 1
, y + height - 1
, null);

String destinationFileName = directory + sourceFileName + "_" + x/width + "_" + y/height + "." + sourceFileExtension;
showMessage("Create file: " + destinationFileName);
File destinationFile = new File(destinationFileName);
ImageIO.write(destinationImage,sourceFileExtension,destinationFile);

y+= height;
}
x+= width;
}
}
}

}
} 

Если кто знает, как можно схранять код с табами…. Милости прошу в коменты.

Реклама

комментария 2 to “Strix. Нарезание картинок.”

  1. krolser Says:

    Т.к намного удобнее пользоваться jar’ой, то приведу тут способ создавать jar для проектов в Eclipse.
    Пишем батник примено такого содержания:

    jar cvfm splitimage.jar MANIFEST.MF -C bin com

    Вдобавок к этому создаём файл с манифестом MANIFEST.MF. Его содержание такое:

    Main-Class: com.krolser.imagespliter.Main

    И всё. Запускаем батник. После этого должен (если всё сделано верно:)) появиться файл splitimage.jar. В командной строки пишем что то подобное

    java -jar splitimage.jar l_01.jpg 168 164

    Нажимает ENTER и у нас полная папка мелких рисунков. Так же четвёртым параметром указать дерикторию, в кототрую сохранять рисунки. Но учтите, что директория должна заканчиваться слешем. Пример:

    java -jar splitimage.jar l_01.jpg 168 164 D:\strix\work\images\l_01\

  2. m1x Says:

    Сорри за оффтоп.
    Ты из Гродно?

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s


%d такие блоггеры, как: