รูปภาพ JPG เป็นรูปแบบยอดนิยมสำหรับวัตถุประสงค์ในการพิมพ์และแก้ไข นอกจากนี้ยังเป็นรูปแบบรูปภาพยอดนิยมสำหรับการแชร์รูปภาพและรูปภาพอื่นๆ บนอินเทอร์เน็ตและระหว่างผู้ใช้มือถือและพีซี ขนาดไฟล์ขนาดเล็กของภาพ JPG ช่วยให้จัดเก็บภาพได้หลายพันภาพในพื้นที่หน่วยความจำขนาดเล็ก เนื่องจากการบีบอัดสูญเสียไป หมายความว่าข้อมูลที่ไม่จำเป็นบางอย่างจะถูกลบอย่างถาวร ในอีกด้านหนึ่ง ข้อได้เปรียบที่ใหญ่ที่สุดของ PNG ที่เหนือกว่า JPEG คือการบีบอัดจะไม่สูญเสียคุณภาพ หมายความว่าคุณภาพจะไม่สูญเสียไปทุกครั้งที่เปิดและบันทึกอีกครั้ง PNG ยังจัดการภาพที่มีรายละเอียดและคอนทราสต์สูงได้ดี ในบทความนี้ เราจะพูดถึงรายละเอียดเกี่ยวกับวิธีการแปลง JPG เป็น PNG โดยใช้ Java Cloud SDK
API การแปลงรูปภาพ
API ที่ใช้ REST ของเรามอบความสามารถในการสร้าง แก้ไข และแปลงไฟล์ภาพเป็น รูปแบบไฟล์ที่รองรับ ในตอนนี้ เพื่อใช้คุณลักษณะในการโหลดและแปลง jpg เป็น png แบบโปร่งใสในแอปพลิเคชัน Java เราจำเป็นต้องใช้ Aspose.Imaging Cloud SDK for Java เนื่องจากเป็นตัวห่อหุ้ม Cloud API ดังนั้น ขั้นตอนต่อไปคือการเพิ่มการอ้างอิงในโครงการ java โดยรวมข้อมูลต่อไปนี้ใน pom.xml ของโครงการประเภท maven build
<repositories>
<repository>
<id>aspose-cloud</id>
<name>artifact.aspose-cloud-releases</name>
<url>https://artifact.aspose.cloud/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-imaging-cloud</artifactId>
<version>22.4</version>
</dependency>
</dependencies>
เมื่อเพิ่มข้อมูลอ้างอิง JDK ในโครงการแล้ว ขั้นตอนสำคัญถัดไปคือการสร้างบัญชีฟรีผ่าน Aspose Cloud Dashboard เพียงลงทะเบียนเพื่อทดลองใช้ฟรีผ่านที่อยู่อีเมลที่ถูกต้อง ตอนนี้เข้าสู่ระบบโดยใช้บัญชีที่สร้างขึ้นใหม่และค้นหา/สร้างรหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์ที่ Cloud Dashboard รายละเอียดเหล่านี้จำเป็นสำหรับวัตถุประสงค์ในการรับรองความถูกต้องในส่วนต่อไปนี้
แปลง JPG เป็น PNG ใน Java
ตอนนี้เรามาพูดถึงรายละเอียดเกี่ยวกับวิธีที่เราสามารถแปลง JPG เป็น PNG โดยใช้ข้อมูลโค้ด Java ในการดำเนินการแปลง เรามี API สองตัวสำหรับแปลงรูปภาพเป็นรูปแบบอื่น:
GET API ต้องการให้เราอัปโหลดรูปภาพไปยัง Cloud Storage ก่อน จากนั้นจึงส่งชื่อใน URL ของ API หลังจากอัปเดตพารามิเตอร์อิมเมจแล้ว API จะส่งคืนอิมเมจที่อัปเดตในการตอบกลับ หากคุณต้องการบันทึกอิมเมจที่อัปเดตบน Cloud Storage คุณต้องทำสิ่งนี้อย่างชัดเจนตามที่แสดงในตัวอย่างด้านล่าง
ในทางกลับกัน เมื่อเรียก POST API ที่สอง คุณสามารถส่งอิมเมจในเนื้อหาคำขอได้โดยตรง นอกจากนี้ยังช่วยให้คุณบันทึกอิมเมจที่อัปเดตบน Cloud Storage ได้ด้วยการระบุค่าพารามิเตอร์ outPath อย่างไรก็ตาม หากคุณไม่ระบุค่า การตอบกลับจะมีอิมเมจสตรีม
- สร้างอินสแตนซ์ของ ImagingApi ตามข้อมูลประจำตัวลูกค้าส่วนบุคคลของคุณ
- อ่านไฟล์ JPG ทั้งหมดจากโฟลเดอร์ในเครื่องโดยใช้วัตถุ File[]
- วนซ้ำไฟล์ในอาร์เรย์และเข้าถึงเนื้อหาของแต่ละภาพเป็นไบต์ []
- ตอนนี้สร้างวัตถุของ CreateConvertedImageRequest โดยที่เราระบุรูปแบบภาพที่ส่งออกเป็น PNG
- เรียกใช้เมธอด createConvertedImage(…) ซึ่งบันทึก JPG เป็น PNG และส่งคืนผลลัพธ์เป็นสตรีมตอบกลับ
- สุดท้ายบันทึกไฟล์ PNG ลงในไดรฟ์ในเครื่องโดยใช้วัตถุ FileOutputStream
// รับ ClientID และ ClientSecret จาก https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";
// สร้างวัตถุภาพ
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);
File directory = new File("/Users/");
//รับไฟล์ทั้งหมดจากโฟลเดอร์
File[] allFiles = directory.listFiles();
if (allFiles == null || allFiles.length == 0) {
throw new RuntimeException("No files present in the directory: " + directory.getAbsolutePath());
}
//ตั้งค่าส่วนขยายรูปภาพที่จำเป็นที่นี่
List<String> supportedImageExtensions = Arrays.asList("jpg","jpeg");
int counter =0;
//รายการไฟล์ภาพ JPG ที่กรองแล้ว
List<File> acceptedImages = new ArrayList<>();
// วนซ้ำไฟล์รูปภาพแต่ละไฟล์ที่อ่านจากโฟลเดอร์ในเครื่อง
for (File file : allFiles) {
//แยกวิเคราะห์นามสกุลไฟล์
String fileExtension = file.getName().substring(file.getName().lastIndexOf(".") + 1);
//ตรวจสอบว่าส่วนขยายอยู่ใน ImageExtensions ที่รองรับหรือไม่
if (supportedImageExtensions.stream().anyMatch(fileExtension::equalsIgnoreCase)) {
//เพิ่มรูปภาพในรายการที่กรอง
acceptedImages.add(file);
// อ่านเนื้อหารูปภาพ JPG
byte[] bytes = Files.readAllBytes(acceptedImages.get(counter).toPath());
// สร้างคำขอแปลงรูปภาพด้วยรูปแบบผลลัพธ์เป็น PNG
CreateConvertedImageRequest request = new CreateConvertedImageRequest(bytes, "PNG", null, null);
// แปลง JPG เป็น PNG และส่งคืนไฟล์ผลลัพธ์ในสตรีมตอบกลับ
byte[] exportedImage = imageApi.createConvertedImage(request);
// บันทึกภาพที่ส่งออกไปยังที่จัดเก็บในตัวเครื่อง
FileOutputStream fos = new FileOutputStream(directory + "/"+file.getName().replaceFirst("[.][^.]+$", "")+".png");
fos.write(exportedImage);
fos.close();
}
}
เปลี่ยน JPG เป็น PNG โดยใช้คำสั่ง cURL
เนื่องจากเราสามารถเข้าถึง REST API ได้โดยใช้คำสั่ง cURL ดังนั้นในส่วนนี้ เราจึงสำรวจรายละเอียดเพื่อแปลง JPG เป็น PNG แบบโปร่งใส ตามข้อกำหนดเบื้องต้น เราต้องสร้างโทเค็นการเข้าถึง JWT (ตามข้อมูลประจำตัวไคลเอ็นต์) ก่อนในขณะที่ดำเนินการคำสั่งต่อไปนี้
curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=bb959721-5780-4be6-be35-ff5c3a6aa4a2&client_secret=4d84d5f6584160cbd91dba1fe145db14" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"
ตอนนี้เรากำลังจะใช้การเรียก ConvertImage API คาดว่าอินพุต JPG จะพร้อมใช้งานในที่เก็บข้อมูลบนคลาวด์แล้ว ตอนนี้ โปรดดำเนินการคำสั่งต่อไปนี้เพื่อเปลี่ยน JPG เป็น PNG
curl -v -X GET "https://api.aspose.cloud/v3.0/imaging/image1.jpg/convert?format=PNG" \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-o Converted.png
บทสรุป
บทความนี้ให้รายละเอียดที่น่าทึ่งเกี่ยวกับวิธีที่เราสามารถแปลง JPG เป็น PNG โดยใช้ข้อมูลโค้ด Java ในทำนองเดียวกัน เราได้พูดถึงขั้นตอนการแปลง JPG เป็น PNG แบบโปร่งใสโดยใช้คำสั่ง cURL โปรดทราบว่า เอกสารคู่มือผลิตภัณฑ์ เป็นที่หนึ่งที่ยอดเยี่ยมในการเรียนรู้เกี่ยวกับคุณสมบัติที่น่าตื่นเต้นอื่นๆ ที่นำเสนอโดย API ในกรณีที่คุณต้องการลองใช้ API เหล่านี้ภายในเบราว์เซอร์ โปรดลองใช้ swagger API Reference
สุดท้ายนี้ โปรดทราบว่า Cloud SDK ทั้งหมดของเราได้รับการเผยแพร่ภายใต้ใบอนุญาต MIT ดังนั้นคุณอาจพิจารณาดาวน์โหลดซอร์สโค้ดทั้งหมดจาก GitHub และแก้ไขตามความต้องการของคุณ สุดท้ายนี้ หากคุณพบปัญหาใดๆ ในขณะใช้ API คุณอาจลองติดต่อหาเราเพื่อขอวิธีแก้ไขปัญหาอย่างรวดเร็วผ่าน ฟอรัมสนับสนุนผลิตภัณฑ์ ฟรี
บทความที่เกี่ยวข้อง
โปรดไปที่ลิงก์ต่อไปนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ: