انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: کاهش حجم عکسها دسته جمعی  (دفعات بازدید: 1984 بار)

0 کاربر و 3 مهمان درحال مشاهده موضوع.

آفلاین beautilinux

  • Jr. Member
  • *
  • ارسال: 48
  • جنسیت : پسر
کاهش حجم عکسها دسته جمعی
« : 16 خرداد 1398، 03:53 ب‌ظ »
یه فولدر دارم شامل حدودا 200 تا عکس با فرمت jpg هستش. یه بش اسکریپت میخوام بنویسم که حجم همه شونو کاهش بده و دسته جمعی اینکارو بکنه. بعدش بریزه داخل یه فولدر بنام archived. چطور باید اینکارو کنم؟ میشه لطف کنین بگین؟

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : کاهش حجم عکسها دسته جمعی
« پاسخ #1 : 16 خرداد 1398، 04:05 ب‌ظ »
درود خدایان یونان بر تو باد!

اینطوری میشه:


#!/bin/bash
for img in "$@"
do

    convert "$img" -resize "1280x960>" $(basename "$img" .JPG)_new.jpg

done

mkdir archived
mv *_new.jpg archived

« آخرین ویرایش: 22 خرداد 1398، 12:11 ب‌ظ توسط Nelliel »
طرفدار انیمه و مانگا - کاربر آرچ لینوکس

آفلاین beautilinux

  • Jr. Member
  • *
  • ارسال: 48
  • جنسیت : پسر
پاسخ : کاهش حجم عکسها دسته جمعی
« پاسخ #2 : 16 خرداد 1398، 11:23 ب‌ظ »
سلام Nelliel
میشه لطفن کدت رو توضیح بدی؟
نمیخوام صرف کپی پست بکنمش

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : کاهش حجم عکسها دسته جمعی
« پاسخ #3 : 17 خرداد 1398، 10:20 ب‌ظ »
همه‌ی عکس‌ها رو به صورت  Argument vector ورودی میگیره و بعد با کاهش سایز حجمشون رو میاره پایین.
طرفدار انیمه و مانگا - کاربر آرچ لینوکس

آفلاین beautilinux

  • Jr. Member
  • *
  • ارسال: 48
  • جنسیت : پسر
پاسخ : کاهش حجم عکسها دسته جمعی
« پاسخ #4 : 17 خرداد 1398، 10:31 ب‌ظ »
همه‌ی عکس‌ها رو به صورت  Argument vector ورودی میگیره و بعد با کاهش سایز حجمشون رو میاره پایین.
سایزشون رو نمیشه پایین نیاره؟

آفلاین beautilinux

  • Jr. Member
  • *
  • ارسال: 48
  • جنسیت : پسر
پاسخ : کاهش حجم عکسها دسته جمعی
« پاسخ #5 : 18 خرداد 1398، 07:09 ب‌ظ »
همه‌ی عکس‌ها رو به صورت  Argument vector ورودی میگیره و بعد با کاهش سایز حجمشون رو میاره پایین.
اسکریپت کار نمیکنه:
beautilinux@linuxer:~/Desktop$ bash a.sh
mv: cannot stat '*_new.jpg': No such file or directory
اسکریپت رو کنار فایلای عکس گذاشتم

آفلاین mahdiar

  • Hero Member
  • *
  • ارسال: 921
  • جنسیت : پسر
پاسخ : کاهش حجم عکسها دسته جمعی
« پاسخ #6 : 19 خرداد 1398، 10:05 ق‌ظ »
سلام

این برنامه رو از software center خود اوبونتو نصب کنید خیلی راحت و گرافیکیه

Converseen

اینم امکاناتش

 • Carry out a single or a multiple conversion
 • Resize one or multiple images
 • Compress images for your web pages
 • Rotate and flip images
 • Rename a bunch of images using a progressive number or a prefix/suffix
 • Selecting a resampling filter to resize images
 • Convert an entire PDF to a bunch of images
 • Extract an image from a Windows icon file (*ico)

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : کاهش حجم عکسها دسته جمعی
« پاسخ #7 : 21 خرداد 1398، 06:13 ب‌ظ »
همه‌ی عکس‌ها رو به صورت  Argument vector ورودی میگیره و بعد با کاهش سایز حجمشون رو میاره پایین.
اسکریپت کار نمیکنه:
beautilinux@linuxer:~/Desktop$ bash a.sh
mv: cannot stat '*_new.jpg': No such file or directory
اسکریپت رو کنار فایلای عکس گذاشتم

قاعدتا اون wild card  باید کار کنه .... لعنت به بش.
طرفدار انیمه و مانگا - کاربر آرچ لینوکس

آفلاین beautilinux

  • Jr. Member
  • *
  • ارسال: 48
  • جنسیت : پسر
پاسخ : کاهش حجم عکسها دسته جمعی
« پاسخ #8 : 21 خرداد 1398، 10:05 ب‌ظ »
همه‌ی عکس‌ها رو به صورت  Argument vector ورودی میگیره و بعد با کاهش سایز حجمشون رو میاره پایین.
اسکریپت کار نمیکنه:
beautilinux@linuxer:~/Desktop$ bash a.sh
mv: cannot stat '*_new.jpg': No such file or directory
اسکریپت رو کنار فایلای عکس گذاشتم

قاعدتا اون wild card  باید کار کنه .... لعنت به بش.
بش ایراد نداره که داداشی اسکریپت شما اشتباهه

آفلاین Silvio Dante

  • High Hero Member
  • *
  • ارسال: 1221
  • جنسیت : پسر
  • Arch Linux
    • وبلاگ شخصی
پاسخ : کاهش حجم عکسها دسته جمعی
« پاسخ #9 : 22 خرداد 1398، 05:08 ق‌ظ »
سلام،
این اسکریپت مسیر عکس‌ها رو به صورت آرگومان ازتون می‌گیره و کیفیت‌شون رو 30 درصد کاهش می‌ده و داخل دایرکتوری‌ای به نام archived ذخیره می‌کنه:
#!/bin/bash

IFS=$'\n'

files=`ls -1 $1`

archivedDir=$1/'archived'
mkdir $archivedDir

for img in $files; do
convert $1/$img -quality 70 $archivedDir/$img
done

فقط اگه می‌خواین به جای مسیر دادن با آرگومان، اسکریپت رو کنار عکس‌ها بذارین و اجرا کنین کافیه $1 رو با کاراکتر نقطه "." جایگزین کنین.
« آخرین ویرایش: 22 خرداد 1398، 05:11 ق‌ظ توسط Silvio Dante »
به ما نگفته بودند ایران در زمان احمدشاه قاجار چگونه بوده است. همیشه به ما دادند، ما هم فکر کردیم باید می‌داده‌اند و تازه خیال می‌کردیم کم‌مان است باز هم می‌خواستیم!!
فریدون فرخزاد

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : کاهش حجم عکسها دسته جمعی
« پاسخ #10 : 22 خرداد 1398، 11:12 ق‌ظ »
نقل‌قول
بش ایراد نداره که داداشی اسکریپت شما اشتباهه

کار می‌کنه خیلی خوبم کار می‌کنه، تازه اون wild card هم درسته!

دلیل اینکه خطا میده اینه که شما بهش ورودی ندادید، گفته بودم که با Argument vector کار می‌کنه باید بهش Argument بدی.

مثلا اینطوری:


./mybash *

الان اون ستاره‌ی بالا Argument vector هست.
طرفدار انیمه و مانگا - کاربر آرچ لینوکس

آفلاین beautilinux

  • Jr. Member
  • *
  • ارسال: 48
  • جنسیت : پسر
پاسخ : کاهش حجم عکسها دسته جمعی
« پاسخ #11 : 22 خرداد 1398، 11:19 ق‌ظ »
سلام،
این اسکریپت مسیر عکس‌ها رو به صورت آرگومان ازتون می‌گیره و کیفیت‌شون رو 30 درصد کاهش می‌ده و داخل دایرکتوری‌ای به نام archived ذخیره می‌کنه:
#!/bin/bash

IFS=$'\n'

files=`ls -1 $1`

archivedDir=$1/'archived'
mkdir $archivedDir

for img in $files; do
convert $1/$img -quality 70 $archivedDir/$img
done

فقط اگه می‌خواین به جای مسیر دادن با آرگومان، اسکریپت رو کنار عکس‌ها بذارین و اجرا کنین کافیه $1 رو با کاراکتر نقطه "." جایگزین کنین.
سلام اگه بخوایم مسیر عکسها رو بصورت متغیر بهش بدیم چطور باید ویرایشش کرد؟ مثلا از کاربر بخواد مسیر رو وترد کنه و کاربر هم به اینصورت مسیر رو بده
/Home/xuser/dir

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : کاهش حجم عکسها دسته جمعی
« پاسخ #12 : 22 خرداد 1398، 11:34 ق‌ظ »
همه‌ی عکس‌ها رو به صورت  Argument vector ورودی میگیره و بعد با کاهش سایز حجمشون رو میاره پایین.
سایزشون رو نمیشه پایین نیاره؟

می‌تونی کیفیتشون رو بیاری پایین که من خودم تغییر سایز رو ترجیح میدم.

نقل‌قول
beautilinux@linuxer:~/Desktop$ bash a.sh
mv: cannot stat '*_new.jpg': No such file or directory


نمی‌تونه فایل‌های  new.jpg رو بفرسته چون چیزی ایجاد نشده که بفرسته.


پ.ن: من اون اسکریپت رو دیروز با موبایل نوشتم و تستش نکردم، (هنوزم نکردم) ولی کار می‌کنه. دیگه یه اسکریپت 4 خطی تست نمی‌خواد  ;)
طرفدار انیمه و مانگا - کاربر آرچ لینوکس

آفلاین beautilinux

  • Jr. Member
  • *
  • ارسال: 48
  • جنسیت : پسر
پاسخ : کاهش حجم عکسها دسته جمعی
« پاسخ #13 : 22 خرداد 1398، 11:47 ق‌ظ »
همه‌ی عکس‌ها رو به صورت  Argument vector ورودی میگیره و بعد با کاهش سایز حجمشون رو میاره پایین.
سایزشون رو نمیشه پایین نیاره؟

می‌تونی کیفیتشون رو بیاری پایین که من خودم تغییر سایز رو ترجیح میدم.

نقل‌قول
beautilinux@linuxer:~/Desktop$ bash a.sh
mv: cannot stat '*_new.jpg': No such file or directory


نمی‌تونه فایل‌های  new.jpg رو بفرسته چون چیزی ایجاد نشده که بفرسته.


پ.ن: من اون اسکریپت رو دیروز با موبایل نوشتم و تستش نکردم، (هنوزم نکردم) ولی کار می‌کنه. دیگه یه اسکریپت 4 خطی تست نمی‌خواد  ;)
دوست عزیز ارور رو ترجمه نکن که. منم میدونم ارور چی میگه :)
تا الانم ممنون زحمت کشیدین.
منتظرم دوستمون به سوال پاسخ بده اسکریپت ایشون کار میکنه
راستی هر برنامه ای باید تست بشه. چه ۲ سطر کد داشته باشه چه ۱۰۰۰ سطر. موفق باشی

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : کاهش حجم عکسها دسته جمعی
« پاسخ #14 : 22 خرداد 1398، 12:34 ب‌ظ »
نقل‌قول
راستی هر برنامه ای باید تست بشه. چه ۲ سطر کد داشته باشه چه ۱۰۰۰ سطر.

پس بیا تستش کنیم:

12:10:11 hossein@ArchLinux ~ du -sh Images
13M     Images
12:10:33 hossein@ArchLinux ~ cd Images   
12:10:40 hossein@ArchLinux Images touch mybash
12:10:49 hossein@ArchLinux Images chmod u+x mybash
12:10:56 hossein@ArchLinux Images nano mybash     
12:11:02 hossein@ArchLinux Images cat mybash     
#!/bin/bash
for img in "$@"
do

    convert "$img" -resize "1280x960>" $(basename "$img" .JPG)_new.jpg
done

mkdir archived
mv *_new.jpg archived
12:11:07 hossein@ArchLinux Images ./mybash *.jpg 
12:11:26 hossein@ArchLinux Images du -sh archived
1.4M    archived
12:11:46 hossein@ArchLinux Images

13 مگ شد 1.4 مگ! یعنی کار کرد، می‌تونی هم به جای resize سوییچ quality رو استفاده کنی.

 
نقل‌قول
سلام اگه بخوایم مسیر عکسها رو بصورت متغیر بهش بدیم چطور باید ویرایشش کرد؟ مثلا از کاربر بخواد مسیر رو وترد کنه و کاربر هم به اینصورت مسیر رو بده

با read از کاربر داده می‌گیری و var name رو می‌دی جایی که مورد نیازه.

همون اسکریپتی که مهران نوشته بود رو ویرایش می‌کنم:


#!/bin/bash

IFS=$'\n'

read -p "Directory path: " response

cd $response

files=`ls -1 $1`

archivedDir=$1/'archived'
mkdir $archivedDir

for img in $files; do
convert $1/$img -quality 70 $archivedDir/$img
done



نقل‌قول
منتظرم دوستمون به سوال پاسخ بده اسکریپت ایشون کار میکنه

اگه ارزش وقتی که دیگران برات می‌ذارن رو بدونی و پیام‌هاشون رو با دقت بخونی (اشاره به پست #3) متوجه میشی که اسکریپت من هم کار می‌کرد ولی وقتی شما حتی به خودت زحمت نمی‌دی سرچ کنی که argV چیه معلومه کار نمی‌کنه.


نقل‌قول
راستی هر برنامه ای باید تست بشه. چه ۲ سطر کد داشته باشه چه ۱۰۰۰ سطر. موفق باشی


فعلا که کار کرد!
طرفدار انیمه و مانگا - کاربر آرچ لینوکس