2

解決に苦労している問題がいくつかあります。

私は短いコードスニペットを作りました:

BufferedImage image = ImageIO.read(new ByteArrayInputStream(payload));
BufferedImage thumbImg = Scalr.resize(image, Method.QUALITY,
    Mode.AUTOMATIC, WIDTH, HEIGHT, Scalr.OP_ANTIALIAS);

ByteArrayOutputStream baos = new ByteArrayOutputStream();
Base64OutputStream b64s = new Base64OutputStream(baos);
ImageIO.write(thumbImg, DATA_TYPE, b64s);
return baos.toByteArray();

返されたサムネイル/バイトはトリミングされます。下部が削除され、透明な領域だけが表示されます。

私が欲しいのは、画像の一部を削除せずに縮小した画像にすることです。

これの目的は、私の html プロジェクトに base64 を返すことです。

4

1 に答える 1

1

はい.. base64出力を作成するためのロジックを変更しました。

Apache Commons Framework の Base64OutputStream に書き込む代わりに。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
Base64OutputStream b64s = new Base64OutputStream(baos);
ImageIO.write(thumbImg, DATA_TYPE, b64s);
return new ThumbnailPayload(baos.toByteArray()));

代わりにこれをしました

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(thumbImg, DATA_TYPE, baos);
return new ThumbnailPayload(Base64.encodeBase64(baos.toByteArray()));

現在、それは働いています。しかし、その日が終わる前に説明を添えて別の方法を提案していただければ、それは素晴らしいことであり、役に立ちます。

于 2016-03-08T01:33:34.627 に答える