2016-11-08 3 views
0

Я хочу вытащить карту из изображения моей колоды. Как я могу это сделать, не загружая каждую отдельную карту отдельно? Я не хочу инициализировать все 52 карты в своем классе.Как я могу извлечь определенную карту из изображения колоды?

Прямо сейчас, я рандомизирую цвет и значение, а затем он находит изображение в моей исходной папке. Но можно ли извлечь только одну карту из моего изображения одной колоды?

bild = ImageIO.read(new File("source folder/" + colour + value + ".png"));  
+1

Трудно помочь без примеров о том, что вы хотите – ItamarG3

+1

Вопрос очень неясен. Представьте, что тот, кто читает, не знает, что вы делаете. Пожалуйста, прочитайте эти две ссылки, а затем отредактируйте свой вопрос, чтобы вставить дополнительную информацию. http://stackoverflow.com/tour и http://stackoverflow.com/help/how-to-ask – Tom

+0

При запуске приложения вы должны прочитать все изображения своей карты. Таким образом, все изображения карт находятся в памяти. Затем вы можете получить к ним доступ, как вам нужно. –

ответ

0

Вы должны инициализировать их все, но вам не нужно делать это руками.

Вы должны создать одно изображение, содержащее каждую отдельную карту, и загрузить его. BufferedImage класс предоставляет вам getSubImage(int x, int y, int w, int h); и возвращает часть (карты) из вашего BufferedImage.

Вы можете заполнить массив карты в то время как перекручивание через образ вашей колоды.

for(int i = 0; i<4; i++){ 
     for(int j = 0; j < 13; j++){ 
      deckArray[13 * i + j] == image.getSubImage(i * cardWidth, 
                 j * cardHeight, 
                 cardWidth, 
                 cardHeight); 
     } 
    } 

Нечто подобное. Обратите внимание, что я предполагаю, что 4 * 13 изображений os листа и между ними нет места. Вам нужно будет найти способ отслеживать ваши карты, какой из них в вашем массиве, независимо от того, как вы их храните, потому что то, что вы определенно не хотите, загружает изображение каждый раз, когда вы хотите его использовать.

Это не проверено и не на 100% уверен, что я выполнил всю математику правильно, просто быструю ссылку, как бы вы могли добиться чего-то подобного.

0

Вы все еще должны загрузить все изображение, но когда вы рисуете, просто использовать

g.drawImage(Image img, int dstx1, int dsty1, int dstx2, int dsty2, int srcx1, int srcy1, int srcx2, int srcy2, ImageObserver observer); 

СРК (= исходные) значения будет верхний левый нижний правый унд координаты в пределах вашего изображения , которые определяют часть, которую вы хотите нарисовать, в то время как значения dst (= destination) будут определять, где она будет нарисована.

Смежные вопросы