3v324v23's picture
Add PNG files and track with Git LFS
befd7da
const express = require('express');
const https = require('https');
const fs = require('fs');
const { exec } = require('child_process');
const path = require('path');
const app = express();
app.use(express.json({ limit: '250mb' })); // Increase the limit to handle large images
app.post('/', (req, res) => {
const { image } = req.body;
if (!image) {
return res.status(400).json({ error: 'No image provided' });
}
// Decode base64 image
const imageBuffer = Buffer.from(image, 'base64');
const tempImagePath = path.join(__dirname, 'temp_image.png');
fs.writeFileSync(tempImagePath, imageBuffer);
const command = `python process.py --image "${tempImagePath}" --cuda`;
exec(command, (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return res.status(500).json({ error: stderr });
}
const outputDir = '/work/huggingface-cloth-segmentation/output';
const outputData = {};
// Read and include 1.png, 2.png, and final_seg.png
const alphaDir = path.join(outputDir, 'alpha');
const alphaFiles = fs.readdirSync(alphaDir);
alphaFiles.forEach(file => {
const filePath = path.join(alphaDir, file);
const fileBuffer = fs.readFileSync(filePath);
const base64String = fileBuffer.toString('base64');
outputData[file] = base64String;
});
const clothSegDir = path.join(outputDir, 'cloth_seg');
const finalSegPath = path.join(clothSegDir, 'final_seg.png');
const finalSegBuffer = fs.readFileSync(finalSegPath);
const finalSegBase64 = finalSegBuffer.toString('base64');
outputData['final_seg.png'] = finalSegBase64;
res.status(200).json(outputData);
});
});
const sslOptions = {
key: fs.readFileSync('/etc/letsencrypt/live/aceadoorn.smartpickai.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/aceadoorn.smartpickai.com/fullchain.pem')
};
// Create HTTPS server with SSL options
https.createServer(sslOptions, app).listen(8188, () => {
console.log('HTTPS Server running on port 8188');
});