Spaces:
jiome
/
Sleeping

File size: 2,200 Bytes
e0a7f38
6933ad0
 
 
655ca0f
e0a7f38
 
 
 
a2eb1d6
6933ad0
6006601
 
a2eb1d6
0989a67
6933ad0
 
 
 
b8472b1
6933ad0
 
655ca0f
6933ad0
932f958
6933ad0
a2eb1d6
6933ad0
 
 
b8472b1
6006601
75301d5
6933ad0
 
 
b8472b1
6933ad0
 
 
b8472b1
6006601
6933ad0
6006601
faf7748
 
 
6933ad0
 
 
 
 
 
6006601
6933ad0
 
6006601
b8472b1
e0a7f38
a2eb1d6
e31f3af
e0a7f38
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
const express = require('express');
const fetch = require('node-fetch');
const FormData = require('form-data');
const sharp = require('sharp');

const app = express();

app.get('/resize', async (req, res) => {
  const imageUrl = req.query.q;

  if (!imageUrl) {
    console.error('没有提供图像 URL');
    return res.status(400).send('没有提供图像 URL');
  }

  try {
    const response = await fetch(imageUrl);
    if (!response.ok) {
      throw new Error(`获取图像失败: ${response.statusText}`);
    }
    const imageBuffer = await response.buffer();
    console.log('原始图像大小:', imageBuffer.byteLength);

    // 使用 sharp 库来调整图像大小
    const resizedImageBuffer = await sharp(imageBuffer).resize(100).toBuffer();
    console.log('压缩后的图像大小:', resizedImageBuffer.byteLength);

    // 创建一个 FormData 对象并添加压缩后的图像
    const formData = new FormData();
    formData.append('file', resizedImageBuffer, { filename: 'compressed.jpg', contentType: 'image/jpeg' });

    // 使用新的 API 地址和方法上传文件
    const uploadResponse = await fetch('https://ours.pages.dev/upload', {
      method: 'POST',
      body: formData
    });

    if (!uploadResponse.ok) {
      throw new Error(`上传图像失败: ${uploadResponse.statusText}`);
    }

    const uploadResult = await uploadResponse.text();
    console.log('上传结果:', uploadResult);

    // Parse the JSON response and construct the full URL
    const uploadResultJson = JSON.parse(uploadResult);
    const fullUrl = `https://ours.pages.dev${uploadResultJson[0].src}`;

    res.setHeader('Content-Type', 'text/plain');
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
    res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
    res.setHeader('Access-Control-Max-Age', '86400');
    res.send(fullUrl);
  } catch (error) {
    console.error('压缩图像时出错:', error);
    res.status(500).send('压缩图像时出错');
  }
});

const PORT = process.env.PORT || 7860;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});