Mail.ru
Почта
Мой Мир
Одноклассники
ВКонтакте
Игры
Знакомства
Новости
Календарь
Облако
Заметки
Все проекты
Все проекты
выход
Регистрация
Вход
Категории
Все вопросы проекта
Компьютеры, Интернет
Темы для взрослых
Авто, Мото
Красота и Здоровье
Товары и Услуги
Бизнес, Финансы
Наука, Техника, Языки
Философия, Непознанное
Города и Страны
Образование
Фотография, Видеосъемка
Гороскопы, Магия, Гадания
Общество, Политика, СМИ
Юридическая консультация
Досуг, Развлечения
Путешествия, Туризм
Юмор
Еда, Кулинария
Работа, Карьера
О проектах Mail
Животные, Растения
Семья, Дом, Дети
Другое
Знакомства, Любовь, Отношения
Спорт
Золотой фонд
Искусство и Культура
Стиль, Мода, Звезды
Полный список
Спросить
Лидеры
Поиск по вопросам
Ответы Mail
Программирование
Android
C/C++
C#
iOS
Java
JavaScript
jQuery
SQL
Perl
PHP
Python
Веб-дизайн
Верстка, CSS, HTML, SVG
Системное администрирование
Другие языки и технологии
Вопросы - лидеры.
Чем Луа лучше Пайтона и наоборот? Буду использовать в целях написания сценариев.
1 ставка
Как загрузить собственный символ в VFD дисплей POS-VFD-RS232?
1 ставка
Возможно ли запустить веб сайт твича без javascript
1 ставка
Программирование, OpenCV, C++, Visual Studio
1 ставка
Лидеры категории
Лена-пена
Искусственный Интеллект
М.И.
Искусственный Интеллект
Y.Nine
Искусственный Интеллект
•••
Программирование на js
)
Ученик
(108), на голосовании
2 месяца назад
Оно не работает, а мне надо чтобы работало
const fs = require('fs');
const path = require('path');
const { PNG } = require('pngjs');
// Define the root directory of the game
const rootDir = '/path/to/mindustry'; // Replace with the actual path to the Mindustry root directory
// List of valid image extensions
const imageExtensions = ['.png'];
// Array to store found textures
let textures = [];
// Function to search for textures recursively
function searchTextures(directory) {
const files = fs.readdirSync(directory);
files.forEach(file => {
const filePath = path.join(directory, file);
const stat = fs.statSync(filePath);
if (stat.isDirectory()) {
// Recursively search in subdirectories
searchTextures(filePath);
} else {
const ext = path.extname(file).toLowerCase();
if (imageExtensions.includes(ext)) {
textures.push(filePath);
}
}
});
}
// RLE Compression Function
function rleCompress(data) {
const compressed = [];
let count = 1;
for (let i = 1; i < data.length; i++) {
if (data[i] === data[i - 1]) {
count++;
} else {
compressed.push([data[i - 1], count]);
count = 1;
}
}
compressed.push([data[data.length - 1], count]);
return compressed;
}
// Process and compress each texture
function processTextures() {
textures.forEach(texturePath => {
fs.createReadStream(texturePath)
.pipe(new PNG())
.on('parsed', function () {
const rgbaArray = [];
for (let i = 0; i < this.data.length; i += 4) {
// Combine RGBA values into a single integer
const rgba = (this.data[i] << 24) | (this.data[i + 1] << 16) | (this.data[i + 2] << 8) | this.data[i + 3];
rgbaArray.push(rgba);
}
и ещё
function rleCompress(data) {
const compressed = [];
let count = 1;
for (let i = 1; i < data.length; i++) {
if (data[i] === data[i - 1]) {
count++;
} else {
compressed.push([data[i - 1], count]);
count = 1;
}
}
compressed.push([data[data.length - 1], count]);
return compressed;
}
function processTextures() {
textures.forEach(texturePath => {
fs.createReadStream(texturePath)
.pipe(new PNG())
.on('parsed', function () {
const rgbaArray = [];
for (let i = 0; i < this.data.length; i += 4) {
const rgba = (this.data[i] << 24) | (this.data[i + 1] << 16) | (this.data[i + 2] << 8) | this.data[i + 3];
rgbaArray.push(rgba);
}
const compressedData = rleCompress(rgbaArray);
const outputFilePath = texturePath.replace(rootDir, 'rle_textures').replace('.png', '.rle.json');
fs.mkdirSync(path.dirname(outputFilePath), { recursive: true });
fs.writeFileSync(outputFilePath, JSON.stringify(compressedData));
});
});
}
// Search and process all textures in the root and mods directories
searchTextures(rootDir);
searchTextures(path.join(rootDir, 'mods'));
processTextures();
Голосование за лучший ответ
Граф Таранов
Гуру
(2951)
3 месяца назад
..-..-..-..-..-..-...-..-..-..-..
⚠
Оракул (50099)
3 месяца назад
он
сконвертирует
js в css
Петр Алексеевич
Оракул
(82071)
3 месяца назад
Эту простыню лучше чат-боту кидать.
Здесь это нечитаемо и слишком много кода, в чем твоя проблема, ты не описал
Похожие вопросы
const fs = require('fs');
const path = require('path');
const { PNG } = require('pngjs');
// Define the root directory of the game
const rootDir = '/path/to/mindustry'; // Replace with the actual path to the Mindustry root directory
// List of valid image extensions
const imageExtensions = ['.png'];
// Array to store found textures
let textures = [];
// Function to search for textures recursively
function searchTextures(directory) {
const files = fs.readdirSync(directory);
files.forEach(file => {
const filePath = path.join(directory, file);
const stat = fs.statSync(filePath);
if (stat.isDirectory()) {
// Recursively search in subdirectories
searchTextures(filePath);
} else {
const ext = path.extname(file).toLowerCase();
if (imageExtensions.includes(ext)) {
textures.push(filePath);
}
}
});
}
// RLE Compression Function
function rleCompress(data) {
const compressed = [];
let count = 1;
for (let i = 1; i < data.length; i++) {
if (data[i] === data[i - 1]) {
count++;
} else {
compressed.push([data[i - 1], count]);
count = 1;
}
}
compressed.push([data[data.length - 1], count]);
return compressed;
}
// Process and compress each texture
function processTextures() {
textures.forEach(texturePath => {
fs.createReadStream(texturePath)
.pipe(new PNG())
.on('parsed', function () {
const rgbaArray = [];
for (let i = 0; i < this.data.length; i += 4) {
// Combine RGBA values into a single integer
const rgba = (this.data[i] << 24) | (this.data[i + 1] << 16) | (this.data[i + 2] << 8) | this.data[i + 3];
rgbaArray.push(rgba);
}
и ещё
function rleCompress(data) {
const compressed = [];
let count = 1;
for (let i = 1; i < data.length; i++) {
if (data[i] === data[i - 1]) {
count++;
} else {
compressed.push([data[i - 1], count]);
count = 1;
}
}
compressed.push([data[data.length - 1], count]);
return compressed;
}
function processTextures() {
textures.forEach(texturePath => {
fs.createReadStream(texturePath)
.pipe(new PNG())
.on('parsed', function () {
const rgbaArray = [];
for (let i = 0; i < this.data.length; i += 4) {
const rgba = (this.data[i] << 24) | (this.data[i + 1] << 16) | (this.data[i + 2] << 8) | this.data[i + 3];
rgbaArray.push(rgba);
}
const compressedData = rleCompress(rgbaArray);
const outputFilePath = texturePath.replace(rootDir, 'rle_textures').replace('.png', '.rle.json');
fs.mkdirSync(path.dirname(outputFilePath), { recursive: true });
fs.writeFileSync(outputFilePath, JSON.stringify(compressedData));
});
});
}
// Search and process all textures in the root and mods directories
searchTextures(rootDir);
searchTextures(path.join(rootDir, 'mods'));
processTextures();