java 獲取圖片屬性、破損圖片處理、寫入日誌、連線資料庫
類CheckPhotos程式碼
package readPhoto;
import java.awt.Container;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.apache.log4j.Logger;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGDecodeParam;
import com.sun.image.codec.jpeg.JPEGImageDecoder;
public class CheckPhotos {
private static Logger logger = Logger.getLogger(CheckPhotos.class);
public static void main(String[] args) throws FileNotFoundException, IOException {
File file = new File("D:\\jkk_img");
check(file);
}
//獲取圖片的屬性值
public static void check(File file) throws FileNotFoundException, IOException{
File[] files =file.listFiles();
for(File f:files){
try{
if(f.isDirectory()){
check(f);
}else{
String filename=f.getName();
if(filename.endsWith(".jpg")){
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(new FileInputStream(f));
BufferedImage image = decoder.decodeAsBufferedImage();
JPEGDecodeParam param = decoder.getJPEGDecodeParam();
int xDensity = param.getXDensity();
int yDensity = param.getYDensity();
BufferedImage sourceImg =ImageIO.read(new FileInputStream(f));
double mm=Double.valueOf(String.format("%.1f",f.length()/1024.0));
int width = sourceImg.getWidth();
int height= sourceImg.getHeight();
if(width!=358 || height!=441 || mm < 15 ||xDensity!=96 ||yDensity!=96 ){
logger.info(xDensity);
logger.info("檔案"+filename+"過小");
System.out.println(xDensity);
System.out.println(yDensity);
System.out.println(mm); //大小
System.out.println(sourceImg.getWidth()); //畫素
System.out.println(sourceImg.getHeight()); //畫素
System.out.println(filename);
}
}
}
}catch(Exception e){
e.printStackTrace();
System.out.println(f.getName());
go1(f);
}
}
}
//處理被損壞的圖片
public static void go1(File file){
BufferedImage bis = null;
try{
bis = ImageIO.read(file);
bis.getWidth();
bis.getHeight();
}catch(Exception e){
try
{
//這兩句程式碼,是處理cmyk型別的圖片,需要ImageMagick的支援
ThumbnailConvert tc = new ThumbnailConvert();
tc.setCMYK_COMMAND(file.getPath());
Image image =null;
image = Toolkit.getDefaultToolkit().getImage(file.getPath());
MediaTracker mediaTracker = new MediaTracker(new Container());
mediaTracker.addImage(image, 0);
mediaTracker.waitForID(0);
System.out.println(image.getWidth(null));
System.out.println(image.getHeight(null));
double mm=Double.valueOf(String.format("%.1f",file.length()/1024.0));
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(new FileInputStream(file));
JPEGDecodeParam param = decoder.getJPEGDecodeParam();
int xDensity = param.getXDensity();
System.out.println(xDensity);
int yDensity = param.getYDensity();
System.out.println("chuio"+yDensity+"?");
System.out.println(mm);
}catch (Exception e1){
e1.printStackTrace();
}
}
}
//破損圖片處理
public static void go(File file) {
BufferedImage bis = null;
try {
bis = ImageIO.read(file);
bis.getWidth();
bis.getHeight();
} catch (Exception e) {
try {
ThumbnailConvert tc = new ThumbnailConvert();
tc.setCMYK_COMMAND(file.getPath());
Image image = null;
image = Toolkit.getDefaultToolkit().getImage(file.getPath());
MediaTracker mediaTracker = new MediaTracker(new Container());
mediaTracker.addImage(image, 0);
mediaTracker.waitForID(0);
image.getWidth(null);
image.getHeight(null);
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
}
類ThumbnailConvert
package readPhoto;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
public class ThumbnailConvert {
private String CMYK_COMMAND = "mogrify -colorspace RGB -quality 80 file1";//轉換cmyk格式
public void setCMYK_COMMAND(String file1) {
exeCommand(CMYK_COMMAND.replace("file1", file1));
}
public boolean exeCommand(String cmd){
InputStreamReader ir = null;
LineNumberReader input = null;
try
{
//linux下java執行指令:Runtime.getRuntime().exec (String str);
Process process = Runtime.getRuntime().exec (cmd);
ir=new InputStreamReader(process.getInputStream());
input = new LineNumberReader (ir);
while ((input.readLine ()) != null){
}
ir.close();
input.close();
}
catch (java.io.IOException e){
System.err.println ("IOException " + e.getMessage());
return false;
}
return true;
}
}
相關文章
- Java後臺Html轉圖片和獲取頁面屬性值,及圖片拼接JavaHTML
- 處理圖片流資料
- jQuery修改和獲取圖片的src屬性值jQuery
- 將上傳圖片打上防偽圖片水印並寫入資料庫資料庫
- Golang 圖片處理 — image 庫Golang
- java 圖片水印處理類Java
- java thumbnailator 做圖片處理JavaAI
- 圖片上傳及圖片處理
- Android 圖片快取處理Android快取
- Java——獲取圖片尺寸和大小Java
- 獲取app 圖片APP
- java+pgsql實現儲存圖片到資料庫,以及讀取資料庫儲存的圖片JavaSQL資料庫
- PHP獲取圖片寬度高度、大小尺寸、圖片型別、用於佈局的img屬性PHP型別
- css 背景圖片屬性CSS
- webpack圖片處理Web
- Thumbnailator處理圖片AI
- iOS 圖片處理iOS
- DDGScreenShot —iOS 圖片處理--多圖片拼接 (swift)iOSSwift
- java連線Oracle資料庫獲取資料JavaOracle資料庫
- Unity從圖片的位元組資料裡面獲取圖片的寬和高Unity
- 【YLCircleImageView】圖片處理View
- 002.00 圖片處理
- 圖片處理--羽化特效特效
- SwiftUI Image 圖片處理SwiftUI
- 獲取本地圖片/視訊地圖
- iOS 獲取視訊圖片iOS
- 【API】隨機獲取圖片API隨機
- Service Worker 圖片載入失敗處理
- Java 圖片裁剪,擷取Java
- thumbor:功能強大的圖片處理庫
- android圖片處理,讓圖片變成圓形Android
- SwiftUI圖片處理(縮放、拼圖)SwiftUI
- 獲取遠端圖片的Blob資源
- JDBC連線批量處理資料入庫JDBC
- Python批量處理圖片Python
- JavaScript WebGL 圖片透明處理JavaScriptWeb
- webpack(6)webpack處理圖片Web
- photoshop常用圖片處理技巧