Вы можете использовать Toolkit, нет необходимости в ImageIO
Image image = Toolkit.getDefaultToolkit().getImage(file.getAbsolutePath());
int width = image.getWidth(null);
int height = image.getHeight(null);
Если вы не хотите обрабатывать загрузку изображения, сделайте
ImageIcon imageIcon = new ImageIcon(file.getAbsolutePath());
int height = imageIcon.getIconHeight();
int width = imageIcon.getIconWidth();
Существует несколько решений, если поиск для этого первого более сложный, но даст лучшую производительность:
Это один из способов реализации иерархической структуры данных в MySQL. Мне нравится руководство здесь
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
Тот, который назван The Nested Set Model.
Второе решение, которое я фактически реализовал сам, является рекурсивным расширением, этот использует множество запросов mysql, и я считаю, что его можно улучшить, но он быстрый и работает хорошо. Дело в том, чтобы использовать для каждой категории такую функцию
var expandSubcategories = function (category) {
return new promise(function (resolve, reject) {
category.getSubcategories().then(function (subcategories) {
//if has subcategories expand recursively inner subcategories
if (subcategories && subcategories.length > 0) {
var expandPromises = [];
_.each(subcategories, function (subcategory) {
expandPromises.push(expandSubcategories(subcategory));
});
promise.all(expandPromises).then(function (expandedCategories) {
category.subcategories = [];
_.each(expandedCategories, function (expandedCategory) {
category.subcategories.push(expandedCategory);
}, this);
//return self with expanded inner
resolve(category);
});
} else {
//if has no subcategories return self
resolve(category);
}
});
});
};
Итак, она проходит через категории и рекурсивно расширяет их.
Возможно, это тоже поможет кому-то.