เขียน JAVA – เซฟรูปจาก URL โดยใช้ JAVA
ในบางครั้งหากเรามี URL ของรูปภาพจำนวนมาก หากเราต้องการเซฟรูปเหล่านั้นมันคงจะเหนื่อยหน่อยเพราะรูปมันเยอะ เราก็ทำการเขียนโปรแกรมเซฟรูปภาพจาก URL หากเรารู้ URL แล้วเราก็แค่ List ใส่ข้อมูลเป็นไฟล์หรือ Database ก็แล้วแต่ จากนั้นก็จะใช้โปรแกรมเล็กๆที่เขียนโดย java ทำการเซฟรูป เพื่อช่วยให้เก็บรูปหรือบันทึกรูปได้เร็วขึ้นนั้นเอง
เริ่มแรกผมจะเขียนโปรแกรม java โดยใช้ eclipse เรามาเริ่มกันเลยดีกว่า ขั้นแรกทำการสร้าง Project เลือกเป็น Java Project
จากนั้นผมจะตั้งชื่อ Project ว่า saveImageURL
เมื่อสร้างโปรเจ็คเสร็จแล้วก็ให้ทำการสร้าง Class หลักโดยกำหนดให้ชื่อเป็น Main
เมื่อสร้าง Class เสร็จแล้วก็ให้เริ่มทำการเขียนโค้ดดังต่อไปนี้
[sourcecode language=”java”]
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
public class Main {
public static void main(String[] arg){
String targetURL = “http://new.thaicoding.net/wp-content/uploads/2013/01/Untitled.png”;
String pathSave = “C:\\”;
try{
URL url = new URL(targetURL);
String filename = url.getFile();
filename = filename.substring( filename.lastIndexOf(‘/’)+1, filename.length() );
System.out.println(“Target URL : ” + targetURL);
System.out.println(“Save File : ” + pathSave+filename);
InputStream is = url.openStream();
OutputStream os;
os = new FileOutputStream(pathSave+filename);
byte[] b = new byte[2048];
int length;
while ((length = is.read(b)) != -1) {
os.write(b, 0, length);
}
is.close();
os.close();
}
catch(IOException e){
System.out.println(e.toString());
}
}
}
[/sourcecode]
เมื่อเขียนโค้ดเสร็จแล้วก็ให้ทำการกดปุ่นรันเพื่อรันโปรแกรมที่เขียนไป
เมื่อกดปุ่มรันแล้วจะได้ผลลัพธ์ดังรูป
จากโค้ดจะเห็นว่าจะทำการเซฟไฟล์ไปที่ C:\ ซึ่งเมื่อเปิดดูที่ Drive C ก็จะได้ไฟล์รูปที่เราต้องการจาก URL แล้วครับ
จากโค้ดตัวอย่าง จะมีการใช้ตัวแปรแบบ String 2 ตัวในการเก็บค่า URL รูปภาพที่ต้องการกับอีกค่าคือ path ที่เราต้องการเซฟรูปภาพ จากนั้นจะใช้ Object URL เพื่อสร้าง Object ในการดึงข้อมูลรูปภาพ ต่อจากนั้นจะต้องมีการสร้าง Object InputStream กับ OutputStream โดยที่ InputStream จะเป็นตัวรับข้อมูลแบบ Stream จาก URL ต่อจากนั้นจะใช้ OutputStream ทำการเขียนข้อมูล Stream เพื่อทำการบันทึกข้อมูลจะกลายเป็นรูปภาพที่เราต้องการโดยในการเขียนข้อมูลของ OutputStream นั้นจะทำการเขียนเป็นไบต์โดยทำการวนลูป While จนข้อมูลหมด เมื่อทำการ Write จนหมดข้อมูลแล้วสิ่งสำคัญคือการ Close OutputStream เพื่อทำการยันทึกรูปภาพให้เสร็จสิ้นสมบูรณ์เมื่อ Close OutputStream แล้วก็ต้องทำการ Close InputStream ด้วยข้อสำคัญอีกอย่างก็คือต้องใส่ try catch เพื่อกันกรณีไม่สร้างดึงข้อมูลรูปภาพจาก URL หรือไม่สามารถบันทึกรูปไฟล์เก็บไว้ได้