java縮略圖,java縮略圖顯示怎麼做

本文目錄一覽:

java 圖片縮放代碼

直接給你一個類,直接套用就好了

import java.awt.Graphics2D;

import java.awt.RenderingHints;

import java.awt.geom.AffineTransform;

import java.awt.image.BufferedImage;

import java.awt.image.ColorModel;

import java.awt.image.WritableRaster;

import java.io.File;

import javax.imageio.ImageIO;

public class Resize {

BufferedImage bufImage;

int width;

int height;

public Resize() {

// TODO Auto-generated constructor stub

}

public Resize(String srcPath,int width,int height) {

this.width = width;

this.height = height;

try{

this.bufImage = ImageIO.read(new File(srcPath));

}catch(Exception e){

e.printStackTrace();

}

}

public static BufferedImage rize(BufferedImage srcBufImage,int width,int height){

BufferedImage bufTarget = null;

double sx = (double) width / srcBufImage.getWidth();

double sy = (double) height / srcBufImage.getHeight();

int type = srcBufImage.getType();

if(type == BufferedImage.TYPE_CUSTOM){

ColorModel cm = srcBufImage.getColorModel();

WritableRaster raster = cm.createCompatibleWritableRaster(width,

height);

boolean alphaPremultiplied = cm.isAlphaPremultiplied();

bufTarget = new BufferedImage(cm, raster, alphaPremultiplied, null);

}else

bufTarget = new BufferedImage(width, height, type);

Graphics2D g = bufTarget.createGraphics();

g.setRenderingHint(RenderingHints.KEY_RENDERING,

RenderingHints.VALUE_RENDER_QUALITY);

g.drawRenderedImage(srcBufImage, AffineTransform.getScaleInstance(sx, sy));

g.dispose();

return bufTarget;

}

}

java根據url獲取網頁縮略圖

代碼如下:

public static Bitmap 

loadImageFromUrl(String url, int sc) {

        URL m;

        InputStream 

i = null;

        BufferedInputStream bis = null;

        ByteArrayOutputStream out = null;

        byte isBuffer[] = new 

byte[1024];

        if (url == null)

            return null;

        try {

            m = new URL(url);

            i = (InputStream) 

m.getContent();

            bis = new BufferedInputStream(i, 1024 * 4);

            out = 

new ByteArrayOutputStream();

            int len = 0;

            while 

((len = bis.read(isBuffer)) != -1) {

                out.write(isBuffer, 0, 

len);

            }

            out.close();

            bis.close();

        } catch (MalformedURLException e1) {

            e1.printStackTrace();

            return null;

        } catch 

(IOException e) {

            e.printStackTrace();

        }

        if 

(out == null)

            return null;

        byte[] data = 

out.toByteArray();

        BitmapFactory.Options options = new 

BitmapFactory.Options();

        options.inJustDecodeBounds = 

true;

        BitmapFactory.decodeByteArray(data, 0, data.length, 

options);

        options.inJustDecodeBounds = false;

        int be = 

(int) (options.outHeight / (float) sc);

        if (be = 0) 

{

            be = 1;

        } else if (be  3) {

            be = 

3;

        }

        options.inSampleSize = be;

        Bitmap bmp = 

null;

        try {

            bmp = BitmapFactory.decodeByteArray(data, 

0, data.length, options); // 返回縮略圖

        } catch (OutOfMemoryError e) 

{

            // TODO: handle exception

            System.gc();

            bmp = null;

        }

        return 

bmp;

    }

有人知道java生成縮略圖的方法嗎 thumbnailator有問題

自己寫了一個,看看能不能有

/**

 * 本類實現一個對JPG/JPEG圖像文件進行縮放處理的方法:即給定一個JPG文件,可以生成一個該JPG文件的縮影圖像文件(JPG格式)br/

 * 提供三種生成縮影圖像的方法:br/

 * 1.設置縮影文件的寬度, 根據設置的寬度和源圖像文件的大小來確定新縮影文件的長度來生成縮影圖像br/

 * 2.設置縮影文件的長度, 根據設置的長度和源圖像文件的大小來確定新縮影文件的寬度來生成縮影圖像br/

 * 3.設置縮影文件相對於源圖像文件的比例大小, 根據源圖像文件的大小及設置的比例來確定新縮影文件的大小來生成縮影圖像br/

 * 新生成的縮影圖像可以比原圖像大, 這時即是放大源圖像br/

 * 

 * @author 不落的太陽(Sean Yang)

 * @version 1.0

 * @since JDK 1.8

 * 

 */

public class ImageScalingTool {

    // 對象是否己經初始化

    private boolean isInitFlag = false;

    // 定義生目標圖片的寬度和高度, 給其一個就可以了

    private int targetPicWidth = 0;

    private int targetPicHeight = 0;

    // 定義目標圖片的相比原圖片的比例

    private double picScale = 0;

    /**

     * 構造函數

     */

    public ImageScalingTool() {

        isInitFlag = false;

    }

    /**

     * 重置JPG圖片縮放器

     */

    public void resetImageScaling() {

        picScale = 0;

        targetPicWidth = 0;

        targetPicHeight = 0;

        isInitFlag = false;

    }

    /**

     * 設置目標圖片相對於源圖片的縮放比例

     * 

     * @param scale

     * @throws JPEGException

     */

    public void setPicScale(double scale) throws Exception {

        if (scale = 0) {

            throw new RuntimeException(” 縮放比例不能為0和負數!  “);

        }

        resetImageScaling();

        picScale = scale;

        isInitFlag = true;

    }

    /**

     * 設置目標圖片的寬度

     * 

     * @param width

     * @throws JPEGException

     */

    public void setSmallWidth(int width) throws Exception {

        if (width = 0) {

            throw new RuntimeException(” 縮影圖片的寬度不能為 0 和負數!  “);

        }

        resetImageScaling();

        targetPicWidth = width;

        isInitFlag = true;

    }

    /**

     * 設置目標圖片的高度

     * 

     * @param height

     * @throws JPEGException

     */

    public void setSmallHeight(int height) throws Exception {

        if (height = 0) {

            throw new RuntimeException(” 縮影圖片的高度不能為 0 和負數!  “);

        }

        resetImageScaling();

        targetPicHeight = height;

        isInitFlag = true;

    }

    /**

     * 開始縮放圖片

     * 

     * @param srcPicFileName

     *            源圖片的文件名

     * @param targetPicFileName

     *            生成目標圖片的文件名

     * @throws JPEGException

     */

    public void transform(String srcPicFileName, String targetPicFileName) throws Exception {

        if (!isInitFlag) {

            throw new RuntimeException(” 對象參數沒有初始化!  “);

        }

        if (srcPicFileName == null || targetPicFileName == null) {

            throw new RuntimeException(” 包含文件名的路徑為空!  “);

        }

        if ((!srcPicFileName.toLowerCase().endsWith(“jpg”))  (!srcPicFileName.toLowerCase().endsWith(“jpeg”))) {

            throw new RuntimeException(” 只能處理 JPG/JPEG 文件!  “);

        }

        if ((!targetPicFileName.toLowerCase().endsWith(“jpg”))  !targetPicFileName.toLowerCase().endsWith(“jpeg”)) {

            throw new RuntimeException(” 只能處理 JPG/JPEG 文件!  “);

        }

        // 新建源圖片和生成圖片的文件對象

        File fin = new File(srcPicFileName);

        File fout = new File(targetPicFileName);

        // 通過緩衝讀入源圖片文件

        BufferedImage sourceImage = null;

        try {

            // 讀取文件生成BufferedImage

            sourceImage = ImageIO.read(fin);

        } catch (IOException ex) {

            throw new RuntimeException(” 讀取源圖像文件出錯!  “);

        }

        // 源圖片的寬度和高度

        int sourceWidth = sourceImage.getWidth();

        int sourceHeight = sourceImage.getHeight();

        // 設置目標圖片的實際寬度和高度

        int targetWidth = 0;

        int targetHeight = 0;

        if (targetPicWidth != 0) {

            // 根據設定的寬度求出長度

            targetWidth = targetPicWidth;

            targetHeight = (targetWidth * sourceHeight) / sourceWidth;

        } else if (targetPicHeight != 0) {

            // 根據設定的長度求出寬度

            targetHeight = targetPicHeight;

            targetWidth = (targetHeight * sourceWidth) / sourceHeight;

        } else if (picScale != 0) {

            // 根據設置的縮放比例設置圖像的長和寬

            targetWidth = (int) (sourceWidth * picScale);

            targetHeight = (int) (sourceHeight * picScale);

        } else {

            throw new RuntimeException(” 對象參數初始化不正確!  “);

        }

        System.out.println(” 源圖片的分辨率:  ” + sourceWidth + “×” + sourceHeight);

        System.out.println(” 目標圖片的分辨率:  ” + targetWidth + “×” + targetHeight);

        // 目標圖像的緩衝對象

        BufferedImage targetImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_3BYTE_BGR);

        // 求得目標圖片與源圖片寬度, 高度的比例.

        double scaleWidth = (double) targetWidth / sourceWidth;

        double scaleHeight = (double) targetHeight / sourceHeight;

        // 構造圖像變換對象

        AffineTransform transform = new AffineTransform();

        // 設置圖像轉換的比例

        transform.setToScale(scaleWidth, scaleHeight);

        // 構造圖像轉換操作對象

        AffineTransformOp ato = new AffineTransformOp(transform, null);

        // 實現轉換, 將bSrc轉換成bTarget

        ato.filter(sourceImage, targetImage);

        // 輸出目標圖片

        try {

            // 將目標圖片的BufferedImage寫到文件中去, jpeg為圖片的格式

            ImageIO.write(targetImage, “jpeg”, fout);

        } catch (IOException ex1) {

            throw new Exception(” 寫入縮略圖像文件出錯!  “);

        }

    }

}

Java編程:怎麼獲得一個視頻的縮略圖呢?

如果本地視頻的話,可以通過Runtime類的exec方法調用ffmpeg來實現

ffmpeg是視頻轉碼,截圖的程序,我這裡有

java JFileChooser選擇圖片時,如何可以看到圖片縮略圖,從而進行選擇?

菜單欄(後退那一排)最後面有個查看,那裡面點擊縮略圖,即可看到從而選擇幻燈片,縮略圖等

java 生成縮略圖保存數據庫

用上傳的圖片先生成一個小的縮略圖,然後讀入縮略圖, 步驟跟你現在的步驟一樣.

生成縮略圖的代碼你從網上搜索下. 我的代碼就不給你了. 呵呵

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/187067.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-27 13:34
下一篇 2024-11-27 13:34

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論