Answers:
ඔබේ හොඳම ඔට්ටුව වනුයේ Imagemagick භාවිතා කිරීමයි
මම සත්ය භාවිතය පිළිබඳ විශේෂ expert යෙක් නොවෙමි, නමුත් මම දන්නවා ඔබට මේ හා සම්බන්ධ ඕනෑම රූපයක් කළ හැකි බව!
උදාහරණයක්:
convert image.png image.jpg
එය මුල් පිටපත මෙන්ම පරිවර්තනය කළ රූපය ද නිර්මාණය කරයි. කණ්ඩායම සඳහා. මම හිතන්නේ ඔබ Mogrify මෙවලම භාවිතා කළ යුතුයි (imagemagick හි සිටින විට එකම විධාන රේඛාවෙන්). මෙය පැරණි රූප නැවත ලියන බව මතක තබා ගන්න .
විධානය:
mogrify -format jpg *.png
mogrify -format jpg -background black -flatten *.png
mogrify -format jpeg img.png
ලිපිගොනු 2 ක් සහ file img.*
එක් පීඑන්ජී එකක් වාර්තා කළ පසු , මුල් ස්පර්ශ නොකළ, සහ නව ජෙපෙග් එකක් වාර්තා කළේය. ඒ නිසා mogrify
කරන්නේ නැහැ මේ අවස්ථාවේ දී ලියන්නට මුල් ගොනු.
mogrify
ප්රලේඛනය: " වෙත මෙම මෙවලම similiar වේ convert
(ඔබ සමග ගොනුව ෙපර ෙයදුම වෙනස් නොකළහොත් මුල් රූපය ගොනු නැවත ලිවූ බව හැර -format විකල්පය) ඕනෑම ඔබ ඉල්ලා වෙනස් සමග. "
මට තවත් විසඳුම් කිහිපයක් තිබේ.
සරලම විසඳුම බොහෝ විට දැනටමත් පළ කර ඇති ආකාරයට ය. ලූප සඳහා සරල බැෂ් එකක්.
for i in *.png ; do convert "$i" "${i%.*}.jpg" ; done
කිසියම් හේතුවක් නිසා මම බාෂ් වල ලූප වළක්වා ගැනීමට නැඹුරු වෙමි, එබැවින් මෙහි වඩාත් ඒකාකාරී xargs ප්රවේශයක් ඇත, නම-මැන්ග්ලිං සඳහා bash භාවිතා කිරීම.
ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.*}.jpg"'
මම පාවිච්චි කරන එක. එකවර කාර්යයන් කිහිපයක් ක්රියාත්මක කිරීමට එය GNU සමාන්තරය භාවිතා කරයි, එමඟින් ඔබට කාර්ය සාධනය ඉහළ නංවයි. එය බොහෝ පද්ධති වල පෙරනිමියෙන් ස්ථාපනය කර ඇති අතර එය නියත වශයෙන්ම පාහේ ඔබේ ගබඩාවේ ඇත (එය වටා තිබීම හොඳ වැඩසටහනකි).
ls -1 *.png | parallel convert '{}' '{.}.jpg'
ඔබ සතුව ඇති ක්රියාවලි ගණනට පෙරනිමි රැකියා ගණන. මගේ ද්විත්ව හර පද්ධතියේ රැකියා 3 ක් භාවිතා කරමින් වඩා හොඳ CPU භාවිතය මට හමු විය.
ls -1 *.png | parallel -j 3 convert '{}' '{.}.jpg'
ඔබට සංඛ්යාලේඛන කිහිපයක් අවශ්ය නම් (ETA, රැකියා සම්පුර්ණ කිරීම, රැකියාවකට සාමාන්ය කාලය ...)
ls -1 *.png | parallel --eta convert '{}' '{.}.jpg'
ඔබ GNU සමාන්තරය භාවිතා කරන්නේ නම් විකල්ප වාක්ය ඛණ්ඩයක් ද ඇත.
parallel convert '{}' '{.}.jpg' ::: *.png
වෙනත් අනුවාදයන් සඳහා සමාන වාක්ය ඛණ්ඩයක් (ඩෙබියන් ද ඇතුළුව).
parallel convert '{}' '{.}.jpg' -- *.png
done
ලූප සඳහා ඔබට අවසානයේ එය අවශ්ය වේ. සමාන්තර දේවල් සඳහා, ඔබට ls
එවැනි ඉදිකිරීමක් සහ නළයක් භාවිතා කිරීමෙන් වැළකී සිටිය හැකිය : parallel -j 3 --eta convert '{}' '{.}.jpg' ::: *.png
( මෙහි බලන්න )
ls
වඩා අර්ථවත් වන නිසා මම බොහෝ විට මා සඳහා වන ක්රමයට ඇලී සිටිමි.
--
වඩා භාවිතා කරන්න :::
) - එසේ වුවද, එය GNU සමාන්තරයේ සමහර අංගයන් කලකිරීමට පත් නොකරයි.
convert
බොහෝ ලිනක්ස් බෙදාහැරීම් වල ඇති විධානය ImageMagick කට්ටලයේ කොටසක් ලෙස ස්ථාපනය කර ඇත. convert
ඩිරෙක්ටරියක් තුළ ඇති සියලුම පීඑන්ජී ලිපිගොනු ක්රියාත්මක කිරීමට සහ එම ද්විත්ව දිගු කිරීමේ ගැටළුව මඟහරවා ගැනීමට බාෂ් කේතය මෙන්න :
for img in *.png; do
filename=${img%.*}
convert "$filename.png" "$filename.jpg"
done
for f in *.png; do convert "$f" "${f/%png/jpg}"; done
සරලම විධානයන් අවශ්ය අයට:
මුල් ගොනු පරිවර්තනය කර තබා ගන්න :
mogrify -format jpg *.png
මුල් ගොනු පරිවර්තනය කර ඉවත් කරන්න :
mogrify -format jpg *.png && rm *.png
සාදයට ප්රමාද වී, නමුත් ක්ලී සමඟ එතරම් සැපපහසු නොවිය හැකි කෙනෙකුගේ සියලු ව්යාකූලතා ඉවත් කිරීම සඳහා, මෙන්න සුපිරි ගොළු යොමු කිරීමක් සහ පැහැදිලි කිරීමක්.
උදාහරණ නාමාවලිය
bar.png
foo.png
foobar.jpg
සියලුම මුල් png ගොනු තබා ගන්නා අතරම jpg ගොනු සාදයි.
mogrify -format jpg *.png
ප්රති ult ලය
bar.png
bar.jpg
foo.png
foo.jpg
foobar.jpg
පැහැදිලි කිරීම
-format
විකල්පය හැරුණු විට මුල් ගොනුව නැවත ලියනු ලැබේ . (සිට එම වෙබ් අඩවිය : This tool is similar to convert except that the original image file is overwritten (unless you change the file suffix with the -format option)
)- format
ඔබ ආකෘතිය වෙනස් කරන බව විකල්පය පහත, සහ ඉදිරි තර්කය වර්ගය (මේ අවස්ථාවේ දී, jpg) විය යුතුය.*.png
ආදාන ගොනු (සියලුම ගොනු .png වලින් අවසන් වේ).සියලුම png ගොනු jpg බවට පරිවර්තනය කරයි, මුල් පිටපත ඉවත් කරයි.
mogrify -format jpg *.png && rm *.png
ප්රති ult ලය
bar.jpg
foo.jpg
foobar.jpg
පැහැදිලි කිරීම
&&
ඉතා වීජ ක්රියාකරු වේ. කෙටියෙන්:
0
යනු දෝෂ නැත.&&
සිදු කරන බැවින් , දකුණු කොටස සිදු කරනු ලබන්නේ දෝෂ නොමැති නම් පමණි . මෙය ප්රයෝජනවත් වන්නේ මුල් ලිපිගොනු පරිවර්තනය කිරීමේදී දෝෂයක් ඇත්නම් ඒවා මකා දැමීමට ඔබට අවශ්ය නොවනු ඇත.rm
විධානය ගොනු දමයි.දැන් මෙතන අය සඳහා යම් යම් වැස්සට තියෙන්නේ වේ CLI තාක්ෂණය, සුවපහසු.
ලිපිගොනු පරිවර්තනය කරන අතරතුර ඔබට යම් ප්රතිදානයක් අවශ්ය නම්:
for i in *.png; do mogrify -format jpg "$i" && rm "$i"; echo "$i converted to ${i%.*}.jpg"; done
සියළුම උප බහලුම්වල ඇති සියලුම png ගොනු පරිවර්තනය කර එක් එක් සඳහා ප්රතිදානය ලබා දෙන්න:
find . -iname '*.png' | while read i; do mogrify -format jpg "$i" && rm "$i"; echo "Converted $i to ${i%.*}.jpg"; done
සියළුම උප බහලුම්වල ඇති සියලුම png ගොනු පරිවර්තනය කරන්න, එහි ප්රති j ලයක් ලෙස ඇති සියලුම jpgs all
ඩිරෙක්ටරියට දමන්න, ඒවා අංක කරන්න, මුල් png ගොනු ඉවත් කරන්න, සහ සෑම ගොනුවක්ම සිදුවන විට ප්රතිදානය පෙන්වන්න:
n=0; find . -iname '*.png' | while read i; do mogrify -format jpg "$i" && rm "$i"; fn="all/$((n++)).jpg"; mv "${i%.*}.jpg" "$fn"; echo "Moved $i to $fn"; done
while read
කොටස ඉවත් කර ගැනීමයි (එය ප්රතිස්ථාපනය කරන්න හෝ සියල්ල ඉවත් කරන්න) ...
find . -name "*.png" -print0 | xargs -0 mogrify -format jpg -quality 50
*.jpg
ලිපිගොනු මුල් ලිපිගොනු අසල තබන අතර *.png
, ගොනු ප්රමාණය / ගුණාත්මකභාවය අඩු කරන්නේ කෙසේද යන්න පෙන්වන අතර නාමාවලියෙහි හෝ ගොනු නාමයේ ඇති අමුතු අක්ෂර නිසා කැඩී නොයයි.
මගේ ඉක්මන් විසඳුම
for i in $(ls | grep .png); do convert $i $(echo $i.jpg | sed s/.png//g); done
for f in ./*.png; do convert "$f" "${f%.*}.jpg"; done
. ඒ අනවශ්ය මගහැරෙන ls
, grep
සහ sed
ඇමතුම් (සහ echo
, නමුත් IIRC බව bash builtin වන අතර එසේ කිසිදු / ඉතා සුළු කාර්ය සාධනය බලපෑමක් ඇති කරනු ඇත), සහ පයිප්ප දෙකක් හා උපකවච දෙකක් ඉවත් ලක්වෙනවා, හා අඩු ටයිප් කිරීමයි. සියලුම අනුවාදයන් ls
විග්රහ කිරීමට ආරක්ෂිත නොවන බැවින් එය ඊටත් වඩා අතේ ගෙන යා හැකිය.
කණ්ඩායම් සැකසුම් සඳහා:
for img in *.png; do
convert "$img" "$img.jpg"
done
Image1.png.jpg වැනි ගොනු නාම වලින් ඔබ අවසන් වනු ඇත.
මෙය කඩිනමින් ක්රියාත්මක වනු ඇත. වෙනත් ෂෙල් වෙඩි ගැන මම නොදනිමි, නමුත් එකම වෙනස වනුයේ ලූප් සින්ටැක්ස් ය.
ලිපිගොනු එකකට වඩා වැඩි ගණනක් විහිදෙන විට පරිවර්තනය කිරීමට මා භාවිතා කරන්නේ මෙයයි. මගේ මුල් එක ටීජීඒ සිට පීඑන්ජී ය
find . -name "*.tga" -type f | sed 's/\.tga$//' | xargs -I% convert %.tga %.png
සංකල්පය නම් ඔබට find
අවශ්ය ලිපිගොනු, දිගුව ඉවත් කර නැවත එය සමඟ එක් කරන්න xargs
. එබැවින් පීඑන්ජී සිට ජේපීජී දක්වා, ඔබ දිගුවන් වෙනස් කර ඇල්ෆා නාලිකා සමඟ ගනුදෙනු කිරීමට තවත් දෙයක් කරන්න, එනම් පසුබිම සැකසීම (මෙම උදාහරණයේ සුදු, නමුත් ඔබට එය වෙනස් කළ හැකිය) ඉන්පසු රූපය සමතලා කරන්න
find . -name "*.png" -type f | sed 's/\.png$//' | xargs -I% convert %.png -background white -flatten %.jpg
ඔබේ පීඑන්ජී විනිවිද පෙනෙන නම්, පරිවර්තනය කිරීමට පෙර කළු බීජී එකක් එකතු කිරීමට උත්සාහ කරන්න:
mogrify -format jpg -background black -flatten *.png
හෝ සුදු බීජී:
mogrify -format jpg -background white -flatten *.png