1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-01 19:07:57 -09:00

Load croped image from Wizard images. fixes display issue

When resizing image to fit the BigCard panel, scale it to fit width.
The result is better.
This commit is contained in:
North 2011-06-14 22:13:22 +03:00
parent f539d9d5ec
commit 1f72804968
11 changed files with 53 additions and 46 deletions
Mage.Client
Mage.Common/src/mage/cards
Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/images

View file

@ -43,7 +43,7 @@
<dependency>
<groupId>com.mortennobel</groupId>
<artifactId>java-image-scaling</artifactId>
<version>0.8.4</version>
<version>0.8.5</version>
</dependency>
<dependency>
<groupId>com.google.collections</groupId>

View file

@ -277,6 +277,7 @@ public class BigCard extends JComponent {
public void setDefaultImage() {
bigImage = ImageHelper.getImageFromResources("/empty.png");
// XXX: scaled to fit width
bigImage = ImageHelper.getResizedImage((BufferedImage) bigImage, getWidth(), getHeight());
}

View file

@ -42,10 +42,7 @@ import mage.client.MageFrame;
import mage.client.components.ColorPane;
import mage.remote.Session;
import mage.view.ChatMessage.MessageColor;
import org.jdesktop.swingx.graphics.ColorUtilities;
import sun.plugin2.gluegen.runtime.CPU;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.table.AbstractTableModel;
@ -105,7 +102,7 @@ public class ChatPanel extends javax.swing.JPanel {
/**
* Maps message colors to {@link Color}.
*/
private static final Map<MessageColor, Color> colorMap = new HashMap<MessageColor, Color>();
private static final Map<MessageColor, Color> colorMap = new EnumMap<MessageColor, Color>(MessageColor.class);
static {
colorMap.put(MessageColor.BLACK, Color.black);

View file

@ -3,20 +3,18 @@ package mage.client.components.arcane;
import mage.client.cards.CardsStorage;
import mage.client.constants.Constants;
import mage.client.util.gui.BufferedImageBuilder;
import mage.client.util.gui.ImageResizeUtil;
import org.apache.log4j.Logger;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.regex.Pattern;
import mage.client.util.ImageHelper;
public class ManaSymbols {
private static final Logger log = Logger.getLogger(ManaSymbols.class);
@ -35,7 +33,7 @@ public class ManaSymbols {
Rectangle r = new Rectangle(11, 11);
try {
Image image = UI.getImageIcon(file.getAbsolutePath()).getImage();
BufferedImage resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
manaImages.put(symbol, resized);
} catch (Exception e) {
log.error("Error for symbol:" + symbol);
@ -59,7 +57,7 @@ public class ManaSymbols {
int h = image.getHeight(null);
if (h > 0) {
Rectangle r = new Rectangle(21, (int) (h * 21.0f / width));
BufferedImage resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
setImages.put(set, resized);
}
} else {
@ -90,7 +88,7 @@ public class ManaSymbols {
dx = 6;
}
Rectangle r = new Rectangle(15 + dx, (int) (height * (15.0f + dx) / width));
BufferedImage resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
File newFile = new File(Constants.RESOURCE_PATH_SET_SMALL + File.separator + _set + "-" + code + ".png");
ImageIO.write(resized, "png", newFile);
}

View file

@ -28,7 +28,6 @@
package mage.client.deckeditor.table;
import mage.cards.MageCard;
import mage.client.cards.BigCard;
import mage.client.cards.CardEventSource;
import mage.client.cards.ICardGrid;
@ -248,8 +247,8 @@ public class TableModel extends AbstractTableModel implements ICardGrid {
if (!card.getId().equals(bigCard.getCardId())) {
Image image = Plugins.getInstance().getOriginalImage(card);
if (image != null && image instanceof BufferedImage) {
image = ImageHelper.getResizedImage((BufferedImage) image, bigCard.getWidth(),
bigCard.getHeight());
// XXX: scaled to fit width
image = ImageHelper.getResizedImage((BufferedImage) image, bigCard.getWidth());
bigCard.setCard(card.getId(), image, new ArrayList<String>(), false);
}
}

View file

@ -38,22 +38,18 @@ import mage.client.MageFrame;
import mage.client.cards.BigCard;
import mage.client.components.HoverButton;
import mage.client.components.MageRoundPane;
import mage.client.components.arcane.GlowText;
import mage.client.components.arcane.ManaSymbols;
import mage.client.components.arcane.UI;
import mage.client.dialog.ShowCardsDialog;
import mage.remote.Session;
import mage.client.util.Command;
import mage.client.util.Config;
import mage.client.util.ImageHelper;
import mage.client.util.gui.BufferedImageBuilder;
import mage.client.util.gui.ImageResizeUtil;
import mage.components.ImagePanel;
import mage.sets.Sets;
import mage.view.ManaPoolView;
import mage.view.PlayerView;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
@ -63,7 +59,6 @@ import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
@ -162,7 +157,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
Image image = ImageHelper.getImageFromResources("/avatars/face" + index + ".jpg");
// Avatar
BufferedImage resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
avatar = new HoverButton("player", resized, resized, resized, r);
avatar.setBounds(6, 6, r.width, r.height);
panelBackground.add(avatar);
@ -219,7 +214,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
// Cheat button
r = new Rectangle(25, 21);
image = ImageHelper.getImageFromResources("/info/cheat.png");
resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
cheat = new JButton();
cheat.setIcon(new ImageIcon(resized));
panelBackground.add(cheat);
@ -273,7 +268,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
}
Image image = ImageHelper.getImageFromResources(imagePath);
BufferedImage resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
JComponent component = null;
if (isButton) {
component = new HoverButton(null, resized, resized, resized, r);

View file

@ -1,10 +1,8 @@
package mage.client.plugins.adapters;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.InterruptedIOException;
import java.util.List;
import java.util.UUID;
@ -18,7 +16,6 @@ import mage.cards.action.TransferData;
import mage.client.MageFrame;
import mage.client.cards.BigCard;
import mage.client.components.MageComponents;
import mage.client.components.MageRoundPane;
import mage.client.game.PlayAreaPanel;
import mage.client.plugins.impl.Plugins;
import mage.remote.Session;
@ -197,7 +194,8 @@ public class MageActionCallback implements ActionCallback {
state = true;
Image image = card.getImage();
if (image != null && image instanceof BufferedImage) {
image = ImageHelper.getResizedImage((BufferedImage) image, bigCard.getWidth(), bigCard.getHeight());
// XXX: scaled to fit width
image = ImageHelper.getResizedImage((BufferedImage) image, bigCard.getWidth());
bigCard.setCard(card.getOriginal().getId(), image, card.getOriginal().getRules(), card.isFoil());
if (card.getOriginal().isAbility()) {
bigCard.showTextComponent();

View file

@ -49,6 +49,7 @@ import mage.client.components.arcane.UI;
import mage.view.CardView;
import com.mortennobel.imagescaling.ResampleOp;
import java.awt.Rectangle;
/**
*
@ -168,6 +169,29 @@ public class ImageHelper {
return image;
}
/**
* Returns an image scaled to fit width
* panel
*/
public static BufferedImage getResizedImage(BufferedImage original, int width) {
if (width != original.getWidth()) {
double ratio = width / (double) original.getWidth();
int height = (int) (original.getHeight() * ratio);
return getResizedImage(original, width, height);
} else {
return original;
}
}
/**
* Returns an image scaled to the needed size
*/
public static BufferedImage getResizedImage(BufferedImage original, Rectangle sizeNeed) {
ResampleOp resampleOp = new ResampleOp(sizeNeed.width, sizeNeed.height);
BufferedImage image = resampleOp.filter(original, null);
return image;
}
/**
* Get image using relative path in resources.
* @param path

View file

@ -1,18 +0,0 @@
package mage.client.util.gui;
import com.mortennobel.imagescaling.ResampleOp;
import java.awt.*;
import java.awt.image.BufferedImage;
/**
* @author nantuko
*/
public class ImageResizeUtil {
public static BufferedImage getResizedImage(BufferedImage original, Rectangle sizeNeed) {
ResampleOp resampleOp = new ResampleOp(sizeNeed.width, sizeNeed.height);
BufferedImage image = resampleOp.filter(original, null);
return image;
}
}

View file

@ -5,7 +5,6 @@ import java.awt.Image;
import javax.swing.JPanel;
import mage.view.CardView;
import mage.view.PermanentView;
public abstract class MageCard extends JPanel {
private static final long serialVersionUID = 6089945326434301879L;

View file

@ -19,6 +19,7 @@ import com.google.common.base.Function;
import com.google.common.collect.ComputationException;
import com.google.common.collect.MapMaker;
import com.mortennobel.imagescaling.ResampleOp;
import java.awt.Graphics2D;
/**
* This class stores ALL card images in a cache with soft values. this means
@ -80,12 +81,13 @@ public class ImageCache {
return loadImage(thumbnailFile);
} else {
BufferedImage image = loadImage(file);
image = getWizardsCard(image);
if (image == null) return null;
//log.debug("creating thumbnail for " + key);
return makeThumbnail(image, thumbnailPath);
}
} else {
return loadImage(file);
return getWizardsCard(loadImage(file));
}
} else {
throw new RuntimeException(
@ -101,6 +103,18 @@ public class ImageCache {
});
}
public static BufferedImage getWizardsCard(BufferedImage image) {
if (image.getWidth() == 265 && image.getHeight() == 370) {
BufferedImage crop = new BufferedImage(256, 360, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = crop.createGraphics();
graphics2D.drawImage(image, 0, 0, 255, 360, 5, 5, 261, 365, null);
graphics2D.dispose();
return crop;
} else {
return image;
}
}
public static BufferedImage getThumbnail(CardView card) {
String key = getKey(card) + "#thumb";
//log.debug("#key: " + key);