Java实现创建HTTP函数,支持图片文件上传到Azure Storage Blob

下载azure的插件
在这里插入图片描述
登录azure的账户,这里我已经登录好了
在这里插入图片描述
pom.xml

        <!--azure storage -->
        <dependency>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>azure-storage-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
package org.example.functions;

import com.microsoft.azure.storage.CloudStorageAccount;
import com.microsoft.azure.storage.StorageException;
import com.microsoft.azure.storage.blob.CloudBlobClient;
import com.microsoft.azure.storage.blob.CloudBlobContainer;
import com.microsoft.azure.storage.blob.CloudBlockBlob;
import com.microsoft.azure.storage.blob.ListBlobItem;

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.security.InvalidKeyException;
import java.text.MessageFormat;

public class UploadUtils {
   
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以提供一个JavaAzure实现GPT画图接口的示例代码。在这个示例中,我们将使用Azure的Functions服务来实现接口,并使用Java编写函数代码。 首先,您需要创建一个Azure Functions项目并添加以下依赖项: ``` <dependency> <groupId>com.microsoft.azure.functions</groupId> <artifactId>azure-functions-java-library</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>com.microsoft.azure</groupId> <artifactId>azure-storage</artifactId> <version>8.6.4</version> </dependency> ``` 接下来,您可以编写一个函数实现GPT画图接口。以下是一个示例代码: ``` import com.microsoft.azure.functions.annotation.*; import com.microsoft.azure.functions.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.URISyntaxException; import java.security.InvalidKeyException; import java.util.*; import java.util.List; import javax.imageio.ImageIO; import com.microsoft.azure.storage.*; import com.microsoft.azure.storage.blob.*; import ai.djl.Model; import ai.djl.ModelException; import ai.djl.inference.Predictor; import ai.djl.modality.Classifications; import ai.djl.modality.Input; import ai.djl.modality.Output; import ai.djl.ndarray.*; import ai.djl.translate.*; import ai.djl.training.util.ProgressBar; public class GPTDraw { @FunctionName("gpt-draw") public HttpResponseMessage run( @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request, final ExecutionContext context) throws InvalidKeyException, URISyntaxException, StorageException, IOException, ModelException { // 获取请求参数 String text = request.getBody().orElse(""); String style = request.getHeaders().getOrDefault("X-Style", "default"); // 加载模型 String modelPath = "model/gpt_" + style; Model model = Model.newInstance("GPT"); model.setBlock(new GPTBlock()); model.load(model.getNDManager(), modelPath); // 推理 Translator<NDList, NDList> translator = new GPTTranslator(); Predictor<NDList, NDList> predictor = model.newPredictor(translator); NDList output = predictor.predict(new NDList(NDArray.empty(0))); output = predictor.predict(new NDList(NDArray.array(text))); String result = output.singletonOrThrow().toString(); // 生成图片 int width = 600; int height = 300; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = image.createGraphics(); g.setColor(Color.WHITE); g.fillRect(0, 0, width, height); g.setColor(Color.BLACK); g.setFont(new Font("Arial", Font.PLAIN, 24)); List<String> lines = splitText(result, 30); int lineHeight = 30; int y = (height - lines.size() * lineHeight) / 2; for (String line : lines) { g.drawString(line, 10, y); y += lineHeight; } // 上传图片Azure Blob存储 String connectionString = System.getenv("AzureWebJobsStorage"); CloudStorageAccount storageAccount = CloudStorageAccount.parse(connectionString); CloudBlobClient blobClient = storageAccount.createCloudBlobClient(); CloudBlobContainer container = blobClient.getContainerReference("images"); container.createIfNotExists(BlobContainerPublicAccessType.CONTAINER, new BlobRequestOptions(), new OperationContext()); CloudBlockBlob blob = container.getBlockBlobReference(UUID.randomUUID().toString() + ".png"); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ImageIO.write(image, "png", outputStream); outputStream.flush(); byte[] data = outputStream.toByteArray(); blob.uploadFromByteArray(data, 0, data.length); // 构造响应 HttpResponseMessage response = request.createResponseBuilder(HttpStatus.OK) .header("Content-Type", "text/plain") .body(blob.getUri().toString()) .build(); return response; } private List<String> splitText(String text, int maxLength) { List<String> lines = new ArrayList<>(); int length = 0; StringBuilder sb = new StringBuilder(); for (String word : text.split(" ")) { if (length + word.length() + 1 > maxLength) { lines.add(sb.toString()); sb = new StringBuilder(); length = 0; } sb.append(word).append(" "); length += word.length() + 1; } if (sb.length() > 0) { lines.add(sb.toString()); } return lines; } } ``` 在上面的代码中,我们首先获取请求参数(文本和样式),然后加载GPT模型并进行推理。接下来,我们使用Java的AWT库生成一个图片,并将其上传到Azure Blob存储中。最后,我们构造一个响应并返回它。 希望这可以回答您的问题!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值