تُظهر أدوات سطر الأوامر سهلة الاستخدام هذه براعة Golang.

يعد تحويل تنسيق الصورة أمرًا حيويًا في تطوير البرامج لتمكين التوافق ومعالجة الصور بكفاءة عبر الأنظمة المختلفة. يمكنك تحسين تخزين الصور ونقلها وعرضها ومعالجتها عن طريق تحويل الصور بين التنسيقات.

هناك العديد من الحزم لتحويل تنسيق الصور في نظام Go ، وتوفر Golang حزمة صور لتنسيق الصور وتحويلها. توفر حزمة الصور وظائف أساسية للصورة ثنائية الأبعاد ، بما في ذلك ميزات لفك تشفير الصور وتشفيرها وتغيير حجمها وتدويرها.

الشروع في استخدام حزمة الصور

توفر مكتبة الصور المضمنة في Go وظائف شاملة للعمل مع الصور بتنسيقات مختلفة. ال صورة توفر الحزمة دعمًا لقراءة الصور وكتابتها ومعالجتها.

ال صورة حزمة تدعم متعددة أنواع ملفات الصور وتنسيقات ، بما في ذلك JPEG و PNG و GIF و BMP. يسمح لك بقراءة وفك تشفير الصور من الملفات أو التدفقات وتشفير وكتابة الصور إلى الملفات أو التدفقات. هذا يجعل من السهل العمل مع أنواع مختلفة من الصور في Go ، بغض النظر عن تنسيقها.

توفر المكتبة أيضًا وظائف شاملة لمعالجة الصور ومعالجتها. ال صورة توفر الحزمة طرقًا للوصول إلى وحدات البكسل الفردية ، مما يتيح معالجة منخفضة المستوى لمهام مثل تعديل قيم البكسل أو تطبيق عوامل تصفية مخصصة.

instagram viewer

بالإضافة إلى ذلك ، تدعم الحزمة نماذج الألوان وتوفر أدوات للتحويل بين تمثيلات الألوان المختلفة. هذا مفيد للعمل مع الصور في مساحات لونية مختلفة.

تحويل الصور من PNG إلى JPEG

PNG و JPEG هي تنسيقات صور شائعة الاستخدامولكل منها خصائص مميزة. PNG عبارة عن تنسيق غير ضياع يحل محل GIF ، ويدعم الصور عالية الجودة ببيانات الصورة المحفوظة والشفافية. تعد PNG مناسبة تمامًا للصور ذات الحواف الحادة أو النصوص أو المناطق ذات اللون الموحد.

ال صورة تحتوي العبوة jpeg و بي إن جي الحزم التي يمكنك استخدامها لتحويل تنسيق الصورة بين التنسيقين.

يمكنك كتابة وظيفة لتحويل صور PNG إلى تنسيق JPEG. فيما يلي مثال يقبل دفق بيانات بايت الصورة كإدخال:

package main

import (
"bytes"
"fmt"
"image/jpeg"
"image/png"
"log"
"net/http"
"os"
)

// ToJpeg converts a PNG image to JPEG format
funcToJpeg(imageBytes []byte)([]byte, error) {

// DetectContentType detects the content type
contentType := http.DetectContentType(imageBytes)

switch contentType {
case"image/png":
// Decode the PNG image bytes
img, err := png.Decode(bytes.NewReader(imageBytes))

if err != nil {
returnnil, err
}

buf := new(bytes.Buffer)

// encode the image as a JPEG file
if err := jpeg.Encode(buf, img, nil); err != nil {
returnnil, err
}

return buf.Bytes(), nil
}

returnnil, fmt.Errorf("unable to convert %#v to jpeg", contentType)
}

ال ToJpeg وظيفة بالكشف عن نوع المحتوى مع http. DetectContentType وظيفة. تأخذ هذه الوظيفة شريحة بايت الصورة كمدخلات وتقوم بإرجاع نوع المحتوى كسلسلة.

ال تبديل العبارة الشرطية حالة واحدة تتحقق مما إذا كان تنسيق الصورة هو PNG. تقوم الوظيفة بفك تشفير شريحة بايت الصورة إذا كانت صورة PNG بامتداد صورة. فك تشفير وظيفة.

وأخيرا، فإن ToJpeg تقوم الوظيفة بإنشاء مخزن مؤقت جديد وتشفير الصورة بتنسيق JPEG بامتداد jpeg. تشفير وظيفة.

يمكنك تحميل صورة PNG قبل استدعاء ToJpeg بامتداد نظام التشغيل. إقرا الملف وظيفة:

funcmain() {
// Read the PNG image file

// Replace with the actual path to your PNG image
imagePath := "image.png"
imageBytes, err := os.ReadFile(imagePath)

if err != nil {
log.Fatalf("Failed to read image file: %s", err)
}

// Convert the PNG image to JPEG
jpegBytes, err := ToJpeg(imageBytes)

if err != nil {
log.Fatalf("Failed to convert image: %s", err)
}

// Write the JPEG bytes to a file

// Replace with the desired path for the output JPEG file
jpegPath := " output.jpg"
err = os.WriteFile(jpegPath, jpegBytes, os.ModePerm)

if err != nil {
log.Fatalf("Failed to write JPEG file: %s", err)
}

fmt.Println("Image conversion successful!")
}

ال رئيسي تقرأ الوظيفة صورة PNG من الدليل المحدد قبل استدعاء ملف ToJpeg وظيفة. ال ToJpeg تقوم الدالة بإرجاع شريحة بايت من الصورة بتنسيق JPEG.

ال رئيسي تقوم الوظيفة بكتابة ملف JPEG إلى المسار المحدد بامتداد نظام التشغيل. اكتب وظيفة. بعد عملية تحويل ناجحة ، فإن ملف رئيسي وظيفة طباعة رسالة إلى وحدة التحكم.

تحويل الصور من JPEG إلى PNG

JPEG هو تنسيق مع فقدان البيانات محسّن للصور الفوتوغرافية المعقدة. يحقق JPEG نسب ضغط أعلى ، مما ينتج عنه أحجام ملفات أصغر ، وإن كان ذلك بفقدان بسيط للجودة.

على عكس PNG ، لا يدعم JPEG الشفافية. يتفوق في عرض الصور الفوتوغرافية بألوان وتدرجات مختلفة.

إليك كيفية تحويل ملف الإخراج. jpg ملف إلى ملف PNG اسمه input.png:

import (
"bytes"
"fmt"
"image/jpeg"
"image/png"
"log"
"os"
)

// JpegToPng converts a JPEG image to PNG format
funcJpegToPng(imageBytes []byte)([]byte, error) {
img, err := jpeg.Decode(bytes.NewReader(imageBytes))

if err != nil {
returnnil, err
}

buf := new(bytes.Buffer)

if err := png.Encode(buf, img); err != nil {
returnnil, err
}

return buf.Bytes(), nil
}

ال JPEGToPng تقوم الدالة بفك تشفير شريحة بايت الصورة بامتداد jpeg. فك تشفير وظيفة. تنشئ الوظيفة مخزنًا مؤقتًا جديدًا لتشفير الصورة بتنسيق PNG بامتداد بي إن جي. تشفير وظيفة.

ها هي رئيسي الوظيفة التي تستدعي JPEGToPng وظيفة:

funcmain() {
// Read the JPEG image file

// Replace with the actual path to your JPG image
imagePath := "output.jpg"
imageBytes, err := os.ReadFile(imagePath)

if err != nil {
log.Fatalf("Failed to read image file: %s", err)
}

// Convert the JPEG image to PNG
pngBytes, err := JpegToPng(imageBytes)

if err != nil {
log.Fatalf("Failed to convert image: %s", err)
}

// Write the PNG bytes to a file

// Replace with the desired path for the output JPEG file
pngPath := " input.png"
err = os.WriteFile(pngPath, pngBytes, os.ModePerm)

if err != nil {
log.Fatalf("Failed to write PNG file: %s", err)
}

fmt.Println("Image conversion successful!")
}

ال رئيسي تقرأ الوظيفة صورة JPEG من الدليل المحدد وتستدعي ملف JPEGToPng وظيفة. تقوم هذه الوظيفة بإرجاع شريحة بايت من الصورة بتنسيق PNG.

يوفر Go معظم الميزات التي تحتاجها لإنشاء تطبيقاتك في مكتبته القياسية

تعد حزمة الصور واحدة من العديد من المكتبات متعددة الاستخدامات في نظام Go. بفضل حزمة الصور ، يمكنك أداء مهام الصور دون الاعتماد على المكتبات الخارجية.

يوفر Go أيضًا حزمًا متعددة الاستخدامات ، بما في ذلك حزمة http لبناء التطبيقات المستندة إلى الويب. تحتوي حزمة http على معظم الميزات التي تحتاجها لإنشاء جانب الخادم لتطبيق ويب.