티스토리 뷰

php 에서는 스누피 클래스를 사용하면 URL 경로상의 이미지 다운이 가능 했었다.


그러나 자바에서는 해보지 않아서 몰랐는데 인터넷 서핑 하다가 도움이 되는 글이 있는거 같아서 갈무리 해왔다.



===========================================



소스코드는 인터넷에 도는 자료를 긁어다가 입맛에 맛게 약간 양념을 쳤다(수정을 가미)

문제는 코덱의 문제로 인해 JAI라는 라이브러리를 사용할 수 없었기 때문에(1.5까지 지원되고 deprecated가 아닌 걍 삭제)

- 대충 읽어보니 라이센스 문제인데.. 아마 소스라이센스같은 저작권 문제로 폐기한듯하다.

 

스택오버플로닷컴에 올라온 몇개의 소스는 되지가 않는다.

그러던중에 twelveMonkeys라는 라이브러리를 이용하여 하면 된다는 이야기가 있어서

라이브러리를 다운받으니 다운로드가 잘된다.

단, NoClassDefFoundError를 뿜어내긴 하지만.. 일단 파일이 다운되는 것을 봤으니

에러따위야 거슬리긴 하지만 문제가 없다.

다만 좀 찝찝할뿐..

 

해당라이브러리의 다운은 

https://github.com/haraldk/TwelveMonkeys 에서 받으면 된다.

 

아래는 소스코드..

 


import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.net.URL;

import javax.imageio.ImageIO;

/** 인터넷 주소를 이용해 이미지 파일을 다운받는 소스
* @author Kang
*
*/

public class ImageDown {

public static void main(String args[]) {

String fullPath = "http://imgnews.naver.com/image/sports/baseball_player/77748.jpg";

String urlPath ="http://imgnews.naver.com/image/sports/baseball_player/";
String fileName = fullPath.replace(urlPath, "");
String localPath ="C:/test";


System.out.println(localPath);
System.out.println(urlPath);
System.out.println(fileName);

imgFile(localPath,urlPath,fileName);

}

public static void imgFile(String localPath, String filePath, String fileName){

String file_ext=fileName.substring(
fileName.lastIndexOf('.')+1,
fileName.length());

BufferedImage image = null;
try{
System.out.println("filePath + fileName: "+filePath + fileName);



image = ImageIO.read(new URL(filePath + fileName));

BufferedImage bufferedImage = new BufferedImage(image.getWidth(),image.getHeight(), BufferedImage.TYPE_INT_BGR);

Graphics2D graphics = (Graphics2D) bufferedImage.getGraphics();
graphics.setBackground(Color.WHITE);
graphics.drawImage(image, 0, 0, null);

ImageIO.write(bufferedImage, file_ext, new File(localPath +"/"+fileName));

System.out.println(fileName+" 다운완료");

}catch(Exception e){
e.printStackTrace();
System.out.println("failed");
}
}



}

 

이건 보너스로 에러로그

중간 내 path는 지움

 

JMagick not available: java.lang.NoClassDefFoundError: magick/MagickImage

Make sure JMagick libraries are available in java.library.path. Current value: 

"**********내 path**************"

Could not instantiate SVGImageReader (missing support classes).

java.lang.NoClassDefFoundError: org/apache/batik/transcoder/TranscoderException

at com.twelvemonkeys.imageio.plugins.svg.SVGImageReaderSpi.onRegistration(Unknown Source)

at javax.imageio.spi.SubRegistry.registerServiceProvider(Unknown Source)

at javax.imageio.spi.ServiceRegistry.registerServiceProvider(Unknown Source)

at javax.imageio.spi.IIORegistry.registerApplicationClasspathSpis(Unknown Source)

at javax.imageio.spi.IIORegistry.<init>(Unknown Source)

at javax.imageio.spi.IIORegistry.getDefaultInstance(Unknown Source)

at javax.imageio.ImageIO.<clinit>(Unknown Source)

at com.knusoft.test.ImageDown.imgFile(ImageDown.java:48)

at com.knusoft.test.ImageDown.main(ImageDown.java:30)

Caused by: java.lang.ClassNotFoundException: org.apache.batik.transcoder.TranscoderException

at java.net.URLClassLoader$1.run(Unknown Source)

at java.net.URLClassLoader$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

... 9 more

 


출처:

https://m.blog.naver.com/grosh/208942750

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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
글 보관함