本文目錄一覽:
如何在Java中進行圖片剪裁 瘋狂JAVA
package test;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.Buffer;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
/**
* 裁剪、縮放圖片工具類
*
* @author CSDN 沒有夢想-何必遠方
*/
public class ImgUtils {
/**
* 縮放圖片方法
*
* @param srcImageFile
* 要縮放的圖片路徑
* @param result
* 縮放後的圖片路徑
* @param height
* 目標高度像素
* @param width
* 目標寬度像素
* @param bb
* 是否補白
*/
public final static void scale(String srcImageFile, String result,
int height, int width, boolean bb) {
try {
double ratio = 0.0; // 縮放比例
File f = new File(srcImageFile);
BufferedImage bi = ImageIO.read(f);
Image itemp = bi.getScaledInstance(width, height, bi.SCALE_SMOOTH);// bi.SCALE_SMOOTH
// 選擇圖像平滑度比縮放速度具有更高優先順序的圖像縮放演算法。
// 計算比例
if ((bi.getHeight() height) || (bi.getWidth() width)) {
double ratioHeight = (new Integer(height)).doubleValue()
/ bi.getHeight();
double ratioWhidth = (new Integer(width)).doubleValue()
/ bi.getWidth();
if (ratioHeight ratioWhidth) {
ratio = ratioHeight;
} else {
ratio = ratioWhidth;
}
AffineTransformOp op = new AffineTransformOp(AffineTransform// 仿射轉換
.getScaleInstance(ratio, ratio), null);// 返回表示剪切變換的變換
itemp = op.filter(bi, null);// 轉換源 BufferedImage 並將結果存儲在目標
// BufferedImage 中。
}
if (bb) {// 補白
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);// 構造一個類型為預定義圖像類型之一的
// BufferedImage。
Graphics2D g = image.createGraphics();// 創建一個
// Graphics2D,可以將它繪製到此
// BufferedImage 中。
g.setColor(Color.white);// 控制顏色
g.fillRect(0, 0, width, height);// 使用 Graphics2D 上下文的設置,填充 Shape
// 的內部區域。
if (width == itemp.getWidth(null))
g.drawImage(itemp, 0, (height – itemp.getHeight(null)) / 2,
itemp.getWidth(null), itemp.getHeight(null),
Color.white, null);
else
g.drawImage(itemp, (width – itemp.getWidth(null)) / 2, 0,
itemp.getWidth(null), itemp.getHeight(null),
Color.white, null);
g.dispose();
itemp = image;
}
ImageIO.write((BufferedImage) itemp, “JPEG”, new File(result)); // 輸出壓縮圖片
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 裁剪圖片方法
*
* @param bufferedImage
* 圖像源
* @param startX
* 裁剪開始x坐標
* @param startY
* 裁剪開始y坐標
* @param endX
* 裁剪結束x坐標
* @param endY
* 裁剪結束y坐標
* @return
*/
public static BufferedImage cropImage(BufferedImage bufferedImage,
int startX, int startY, int endX, int endY) {
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
if (startX == -1) {
startX = 0;
}
if (startY == -1) {
startY = 0;
}
if (endX == -1) {
endX = width – 1;
}
if (endY == -1) {
endY = height – 1;
}
BufferedImage result = new BufferedImage(endX – startX, endY – startY,
4);
for (int x = startX; x endX; ++x) {
for (int y = startY; y endY; ++y) {
int rgb = bufferedImage.getRGB(x, y);
result.setRGB(x – startX, y – startY, rgb);
}
}
return result;
}
public static void main(String[] args) throws IOException {
File input = new File(“input.jpg”);
BufferedImage img = ImageIO.read(input);
cropImage(img, 10, 10, 20, 20);
File output = new File(“output.jpg”);
ImageIO.write(img, “jpg”, output);
}
}
大家覺得初學者《瘋狂Java講義》怎麼樣
我見過特好的一本書,很值得買。全書大概有800頁,javase的知識都涉及到,部分內容對新手有難度,沒有編程基礎不建議看。而且也不適合只想過java二級的,只適合打算在java領域深造的人群。至於大神的話,不用看se的書了吧。
瘋狂java講義學完什麼水平
瘋狂java講義學完中等水平。瘋狂java講義是國人原創必讀經典了,同樣非常適合初學者。講解內容細緻全面,系統通俗,目錄劃分和查找非常方便,就算完全沒有基礎也可以學的沒有什麼壓力,學完可以升級一個水平,達到中等水平。
學習JAVA,有什麼書籍推薦
《瘋狂java講義》 這本書深入介紹了java編程的相關方面,這本書的內容有Java基本語法結構、面向對象特徵、集合框架體系、 泛型、異常處理、GUI編程、JDBC資料庫編程等等等。非常齊全,我有全套Java視頻資料
《Head First Java》 這本書呢被亞馬遜評為十大好書之一。《Head First Java》是本完整的面向對象程序設計和Java的學習指導。是根據學習理論所設計的,讓你可以從學習程序語言的基礎開始一直到包括線程、網路與分散式程序等項目。最重要的,你會學會如何像個面向對象開發者一樣去思考。
《深入理解Java虛擬機:JVM高級特性與最佳實踐》 這本書的主要內容是如何獨立地編譯一個OpenJDK7,講解了JVM的自動內存管理,分析了虛擬機的執行子系統,講解了程序的編譯與代碼的優化,探討了Java實現高效並發的原理。
《企業應用架構模式》 這本書適合做框架的人去看,如果你打算自己寫一個ORM的話,這本書是一定要看的。
《Agile Java》中文版 《Agile Java》中文版以JDK5.0的語法為基礎講解,如果同學們要學習JDK5.0的新語法也不錯。可以讓你以最少的時間掌握 Java最重要的知識,同時培養出優秀的編程思路,我有全套Java視頻資料
叢林也瘋狂java怎麼下載
1、首先請下載模擬器安裝好,然後下載叢林也瘋狂java安裝包。
2、打開模擬器找到你下載好的安裝包,右鍵選擇使用模擬器安裝此程序。
3、安裝完畢後,我們點擊模擬器的首頁,就可以看到已經安裝好的叢林也瘋狂java遊戲了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/301227.html