ブログの説明
パソコンやアンドロイドなどの情報を収集しまとめているブログです。

記事内に張られている画像はクリックすると見やすいサイズの画像が表示されるようになっています。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
アクセスカウンター
検索フォーム
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

JavaでPNGをJPGに変換するサンプル

Javaに付属のライブラリでPNGファイルをJPGに変換するサンプルです。
マルチスレッドで変換するようになっています。
IOがネックで速度が低下する場合があるので、スレッドは増やし過ぎないようにしてください。

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.ArrayList;

import javax.imageio.ImageIO;

public class Main {
	public class HeiWid
	{
		private int width , height;
		public int getWidth() {
			return width;
		}

		public void setWidth(int width) {
			this.width = width;
		}

		public int getHeight() {
			return height;
		}

		public void setHeight(int height) {
			this.height = height;
		}

	}
	
	ArrayList<HeiWid> widHei = new ArrayList<HeiWid>();
	Object obj = new Object();
	int id = 0;
	
	public int getID()
	{
		int ret = id;
		id++;
		return ret;
	}

	public ArrayList<HeiWid> getWidHei() {
		return widHei;
	}

	public void convert(String from , String to)
	{
		try {
			BufferedImage image = ImageIO.read(new File(from));
			BufferedImage tmp = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
			Graphics2D off = tmp.createGraphics();
			off.drawImage(image, 0, 0, Color.WHITE, null);

			
			HeiWid wh = new HeiWid();
			wh.setHeight(tmp.getHeight());
			wh.setWidth(tmp.getWidth());
			
			synchronized (obj) {
				widHei.add(wh);
			}

			
			ImageIO.write(tmp, "jpg", new File(to));
		} catch (Exception e) {
			System.out.println("error");
		}
	}
	public void convertMT(String[] fileNames , int id , int threadCount)
	{
		File dir = new File("D:\\Users\\user\\Desktop\\スクリーンショット");
		String outPutPath = "D:\\Users\\user\\Desktop\\新しいフォルダー";
		//String[] fileNames = dir.list();
		//System.out.println(fileNames.length);
		
		for( int i = id ; i < fileNames.length ; i+=threadCount)
		{
			String fileName = fileNames[i];
			if( fileName.endsWith("PNG") || fileName.endsWith("png") ||
					fileName.endsWith("BMP") || fileName.endsWith("bmp"))
			{
				System.out.println(fileName);
				convert(dir.getPath()  + "\\" + fileName ,
						outPutPath + "\\" + fileName + ".jpg");
			}
		}
	}


	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
//		String from = "D:\\\\Users\\user\\Desktop\\新しいフォルダー\\WS002202.PNG";
//		String to   = "D:\\\\Users\\user\\Desktop\\新しいフォルダー\\WS002202.JPG";
		Main main = new Main();
		File dir = new File("D:\\Users\\user\\Desktop\\スクリーンショット");
		//String outPutPath = "D:\\Users\\user\\Desktop\\新しいフォルダー";
		String[] fileNames = dir.list();
//		System.out.println(fileNames.length);
		
//		for( String fileName : fileNames)
//		{
//			if( fileName.endsWith("PNG") || fileName.endsWith("png"))
//			{
//				System.out.println(fileName);
//				main.convert(dir.getPath()  + "\\" + fileName ,
//						outPutPath + "\\" + fileName + ".jpg");
//			}
//		}
		
		ArrayList<Thread> th = new ArrayList<Thread>();
		
		
		for( int i = 0; i < 8 ; i++)
		{
		th.add( new Thread( new Runnable() {
					@Override
					public void run() {
						main.convertMT(fileNames, main.getID(), 8);
					}
				}));
		}
		
		
		
		for( Thread t : th)
			t.start();
		
		for( Thread t : th)
		{
			try {
				t.join();
			} catch (InterruptedException e) {
				// TODO 自動生成された catch ブロック
				e.printStackTrace();
			}
		}
		
		ArrayList<HeiWid> widHeis = main.getWidHei();
		for(HeiWid heiWid :  widHeis)
		{
			System.out.println(heiWid.getWidth() + " , " + heiWid.getHeight() );
		}

	}

}

COMMENT

EDIT COMMENT

非公開コメント

最新トラックバック
ブロとも申請フォーム
QLOOKアクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。