ইমেজম্যাগিকের সাথে জেপিজি ফাইলগুলি সংকুচিত করার জন্য প্রস্তাবনা


246

আমি ইমেজম্যাগিকের সাথে একটি জেপিজি চিত্র ফাইলটি সংকুচিত করতে চাই তবে আকারে খুব বেশি পার্থক্য পেতে পারি না। ডিফল্ট হিসাবে আউটপুট আকার ইনপুট চেয়ে বড়। আমি জানি না, তবে কিছু + প্রোফাইল বিকল্প যুক্ত করার পরে এবং মানটি সেট করার পরে আমি একটি ছোট আকার পেতে পারি তবে এখনও মূলটির সাথে সমান।

ইনপুট চিত্রটি 255kb, প্রক্রিয়াজাত চিত্রটি 264kb (প্রোফাইলগুলি সরাতে + প্রোফাইল ব্যবহার করা এবং মান 70% এ সেট করা) is কমপক্ষে 150 কেবিতে এই চিত্রটি সংকুচিত করার কোনও উপায় আছে কি? এটা কি সম্ভব? আমি কোন চিত্রম্যাগিক বিকল্পগুলি ব্যবহার করতে পারি?


3
একটি জেপিজি পুনরায় সংবিধানের ফলে সর্বদা বড় আকার ধারণ করলেও একটি অবনমিত চিত্রের ফলস্বরূপ। যদি আপনি প্রথমবার এটি সংরক্ষণ করার আগে আসলটি দিয়ে শুরু করতে পারতেন তবে ভাল।
মার্ক রান্সম

আমি জানি, তবে দুর্ভাগ্যক্রমে আমার কাছে মূল চিত্রটি নেই, আমার কাছে থাকা সমস্তই একটি বড় জেপিজি ফাইল, তবে আমি মনে করি যে আমি মানের এবং আকারের মধ্যে একটি ভাল ভারসাম্য পেতে পারি
জাভিস পেরেজ

উত্তর:


440

আমি সর্বদা ব্যবহার:

  • 85 মানের
  • প্রগতিশীল (সংক্ষেপিত সংক্ষেপণ)
  • আকারের অনুকূলকরণের জন্য খুব ক্ষুদ্র গাউসিয়ান অস্পষ্টতা (০.০৫ বা ব্যাসার্ধের ০.০) চিত্রের গুণমান এবং আকারের উপর নির্ভর করে, এটি জেপিগের আকারটি উল্লেখযোগ্যভাবে অনুকূল করে।
  • কোনও মন্তব্য বা এক্সিফ ট্যাগ স্ট্রিপ করুন

ইমেজম্যাগিক হওয়া উচিত

convert -strip -interlace Plane -gaussian-blur 0.05 -quality 85% source.jpg result.jpg

বা নতুন সংস্করণে:

magick source.jpg -strip -interlace Plane -gaussian-blur 0.05 -quality 85% result.jpg

আশা করি এটি কার্যকর হবে।

উত্স লিঙ্ক: http://www.yuiblog.com/blog/2008/12/05/imageopt-4/

মন্তব্যগুলিতে @ ফোর্ডি থেকে (যদি আপনি চান তবে তার মন্তব্য থাম্ব করতে ভুলবেন না): আপনি যদি অস্পষ্টতা অপছন্দ করেন তবে -sampling-factor 4:2:0পরিবর্তে ব্যবহার করুন। এটি যা করে তা হ'ল ক্রোমা চ্যানেলের রেজোলিউশনটি অর্ধেকে কমিয়ে আনা হবে, আপনার চোখ যে ল্যামিন্যান্স রেজোলিউশনের দিকে ঝুঁকছে তাতে গণ্ডগোল না করে। আপনি যদি রূপান্তরটিতে আরও ভাল বিশ্বস্ততা চান, আপনি নির্দিষ্ট করে ফাইল সাইজ না বাড়িয়ে কিছুটা উন্নতি করতে পারেন -define jpeg:dct-method=float- এটি, ডিফল্ট দ্রুত পূর্ণসংখ্যার সংস্করণের পরিবর্তে আরও সঠিক ভাসমান বিন্দু বিচ্ছিন্ন কোসাইন রূপান্তর ব্যবহার করুন।


2
ধন্যবাদ! এই কোডটি আমাকে ছবিটি 170kb এ পেয়েছে, এখন আমি যেতে পারি এবং আপনার কোডটি ব্যবহার করে ধন্যবাদ জানাতে পারি, ধন্যবাদ -ও আমি নির্দিষ্ট-সীমাবদ্ধতা: MAX_SIZE_IN_KB বিকল্পটি পেয়েছি যা সত্যই সহায়তা করে, আপনাকে ধন্যবাদ!
জাভিস পেরেজ

36
আপনি যদি একগুচ্ছ ফাইল করছেন, আপনি এটিও করতে পারেন mogrify -strip -interlace Plane -gaussian-blur 0.05 -quality 85% *.jpg। এই কমান্ডটি চালানোর আগে আপনার ব্যাকআপ রয়েছে কিনা তা নিশ্চিত হয়ে নিন। এটি জায়গায় লিখতে হবে।
রিচার্ড অয়েট

3
-stripএটা আমার জন্য। ধন্যবাদ
নাইজেল অ্যাঞ্জেল

38
আমি খুব ঝাপসা ছবি পেয়েছি। জায়গা বাঁচানোর জন্য ইচ্ছাকৃতভাবে চিত্রটি অস্পষ্ট করা এটি প্রতিকূল বলে মনে হচ্ছে। এটি কেবলমাত্র নিম্নমানের% ব্যবহার করা আরও কী বোঝায় না? আপাত চিত্রের গুণমান বজায় রেখে গুণগত পরিবর্তন প্রক্রিয়া স্থান সাশ্রয় করতে বেশ ভাল। আমি আমার চিত্রটিতে একটি 0.05 গাউসিয়ান অস্পষ্টতা রেখেছি এবং এটি কিছু জায়গা সাশ্রয় করেছে তবে একেবারে বাজে p আমি ব্যবহার স্থির mogrify -strip -quality 75% *.jpg। স্ট্রিপ দুর্দান্ত। 0 গুণমান হ্রাস এবং বড় স্থান সঞ্চয়। এবং 75% এর গুণমানটি সবেমাত্র 100% থেকে পৃথক, তবে অর্ধেক স্থান নেয়।
বাটাল বাটকাস

80
যদি আপনি অস্পষ্টতা অপছন্দ করেন তবে পরিবর্তে স্যাম্পলিং-ফ্যাক্টর 4: 2: 0 ব্যবহার করুন। এটি যা করে তা হ'ল ক্রোমা চ্যানেলের রেজোলিউশনটি অর্ধেকে কমিয়ে আনা হবে, আপনার চোখ যে ল্যামিন্যান্স রেজোলিউশনের দিকে ঝুঁকছে তাতে গণ্ডগোল না করে। আপনি যদি রূপান্তরটিতে আরও ভাল বিশ্বস্ততা চান, আপনি ফাইল-ডিজাইনের বৃদ্ধি ছাড়াই সামান্য উন্নতি পেতে পারেন -Difine jpeg: dct-method = float - অর্থাৎ, ডিফল্ট দ্রুত না হয়ে আরও সঠিক ভাসমান পয়েন্ট বিচ্ছিন্ন কোসাইন রূপান্তর ব্যবহার করুন পূর্ণসংখ্যা সংস্করণ।
ফোর্ডি

67

আমি গুগল পেজস্পিড অন্তর্দৃষ্টি ইমেজ অপ্টিমাইজেশান গাইডলাইন ব্যবহার করছি এবং ইমেজম্যাগিকের জন্য তারা নিম্নলিখিতটি সুপারিশ করে:

-স্যাম্পলিং-ফ্যাক্টর 4: 2: 0
-স্ট্রিপ-
গুণমান 85 [এটি ভিন্ন হতে পারে, আমি 60-80 পরিসর ব্যবহার করি, কম সংখ্যার অর্থ এখানে ছোট ফাইল]]
অন্তর্ভুক্ত-
কালারস্পেস আরজিবি

ইমেজম্যাগিকের কমান্ড:

convert image.jpg -sampling-factor 4:2:0 -strip -quality 85 -interlace JPEG -colorspace RGB image_converted.jpg

এই বিকল্পগুলির সাথে আমি বেশি দৃশ্যমান ক্ষতি ছাড়াই জেপিজি আকারে 40% পর্যন্ত সঞ্চয় পেতে পারি।


16

যারা পিএইচপিতে ইমেজিক ক্লাস ব্যবহার করছেন তাদের জন্য কেবল বলছেন:

$im -> gaussianBlurImage(0.8, 10);      //blur
$im -> setImageCompressionQuality(85);  //set compress quality to 85

14

একবার আমার বিকাশের জন্য ক্যামেরা থেকে ফটোগুলি পুনরায় আকার দেওয়ার দরকার ছিল:

  • আসল ফাইলসাইজ: 2800 কেবি
  • রেজোলিউশন: 3264x2448

COMMAND:

mogrify -quality "97%" -resize 2048x2048 -filter Lanczos -interlace Plane -gaussian-blur 0.05 
  • ফাইল সাইজ 753 কেবি ফলাফল
  • রেজোলিউশন 2048x2048

এবং আমি আমার 1920x1080 রেজোলিউশন মনিটরের সাথে পূর্ণ পর্দায় কোনও পরিবর্তন দেখতে পাচ্ছি না। 20 ডিগ্রি রেজোলিউশন সর্বোচ্চ 360 ডিপিআই মানের 10 সেমি ফটো বিকাশের জন্য সেরা। আমি এটি ফালা করতে চাই না।

সম্পাদনা: আমি লক্ষ্য করেছি যে আমি ঝাপসা না করেও আরও ভাল ফলাফল পেয়েছি। অস্পষ্টতা ছাড়াই ফাইলসাইজ হ'ল মূলের 50%, তবে মানটি ভাল (জুম করার সময়)।


আপনাকে "ফিল্টার ল্যাঙ্কজোস" যুক্ত করতে হবে না। এটি ডিফল্টরূপে imagemagick.org/script/command-line-options.php#filter
ইলিয়া প্রকিন

উপরে যেমন বলা হয়েছে - ফাইলটি ছোট করার জন্য চিত্রের রেজোলিউশন হ্রাস করা অযথা। পরিবর্তে জেপিজি গুণমান কম করুন! আপনি নিজেই এটি পরীক্ষা করতে পারেন - দুটি চিত্রের তুলনা করুন একটির 97% জেপিজি এবং অন্যের সাথে 68% বলার জন্য রূপান্তরিত এবং আপনি যদি 100% জুমের দিকে তাকান এমনকি কোনও পিক্সেল পৃথক হতে দেখে আপনার পক্ষে সত্যিই খুব কঠিন হতে হবে! শেয়ার ক্যামেরা এবং ফোনের সেটিংসের শুধু আপনার আপনার পিসি জন্য বড় স্টোরেজ ও বড় HDDs ... সাথে নতুন ফোনের কিনতে ওয়ানা করতে হাস্যকর উচ্চ photo.stackexchange.com/questions/30243/...
McVitas

10

আমি জেপিজি এবং পিএনজি হ্রাস করার জন্য একটি দরকারী সাইড নোট এবং একটি সাধারণ পরামর্শ যুক্ত করব।

প্রথমত, ইমেজম্যাগিক পড়বে (বা আরও ভাল "অনুমান" ...) ইনপুট জেপিগ সংক্ষেপণ স্তর এবং তাই যদি আপনি কিছু যোগ না করেন তবে -quality NNআউটপুটটিকে ইনপুট হিসাবে একই স্তরের ব্যবহার করা উচিত। কখনও কখনও একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হতে পারে। অন্যথায় ডিফল্ট স্তরটি হল -quality 92( www.imagemagick.org দেখুন )

ব্যাচ প্রক্রিয়াটির জন্যও পরামর্শটি সত্যই দুর্দান্ত এক দুর্দান্ত সরঞ্জাম ইমেজঅપ્টিম সম্পর্কিত
আপনি ছোট jpgs পেতে পারেন (এবং পাশাপাশি পিএনজিও, বিশেষত ফ্রি ইমেজ আলফা [ব্যাচ প্রক্রিয়া নয়] বা ব্যাচ প্রক্রিয়া প্রয়োজন হলে ফ্রি পিএনজিউ ব্যবহারের পরে ) পেতে পারেন।
কেবলমাত্র নয়, এই সরঞ্জামগুলি ম্যাক এবং উইনের জন্য এবং কমান্ড লাইন হিসাবে রয়েছে (আমি ব্রু ব্যবহার করে ইনস্টল করার পরামর্শ দিয়েছি এবং তারপরে ব্রিউ সূত্রে অনুসন্ধান করার পরামর্শ দিই )।


আমি লিনাক্সের জন্য pngquant ব্যবহার করেছি । এটি চিত্রআল্ফ পৃষ্ঠায় উল্লেখ করা হয়েছিল। ইঙ্গিতটির জন্য ধন্যবাদ
আলেকজান্ডার রিহ্লিটস্কি

8

আমি -adaptive-resize 60%প্রস্তাবিত কমান্ড যোগ , কিন্তু সঙ্গে -quality 60%

convert -strip -interlace Plane -gaussian-blur 0.05 -quality 60% -adaptive-resize 60% img_original.jpg img_resize.jpg

এগুলি আমার ফলাফল ছিল

  • img_original.jpg = 13,913 কেবি
  • img_resized.jpg = 845KB

আমি নিশ্চিত নই যে সেই রূপান্তরটি আমার চিত্রটিকে খুব বেশি ধ্বংস করে দেয়, তবে আমি সত্যই বলেছি না যে আমার রূপান্তরটি বাচ্চার মতো দেখাচ্ছে। এটি একটি প্রশস্ত কোণ প্যানোরামা ছিল এবং আমি ক্ষুদ্রতর বাধার জন্য যত্ন নিই না।


5

@ জাভিসপ্রেজ - কমপক্ষে 150 কেবিতে এই চিত্রটি সংকোচিত করার কোনও উপায় আছে কি? এটা কি সম্ভব? আমি কোন চিত্রম্যাগিক বিকল্পগুলি ব্যবহার করতে পারি?

JPG ফাইলগুলিতে লেখার জন্য পছন্দসই আউটপুট ফাইলের আকার নির্দিষ্ট করতে ইমেজম্যাগিকের একটি বিকল্প রয়েছে যেখানে নীচের লিঙ্কগুলি দেখুন।

http://www.imagemagick.org/Usage/formats/#jpg_write http://www.imagemagick.org/script/command-line-options.php#define

-define jpeg:extent={size} As of IM v6.5.8-2 you can specify a maximum output filesize for the JPEG image. The size is specified with a suffix. For example "400kb".

convert image.jpg -define jpeg:extent=150kb result.jpg

আপনি ইনপুট থেকে-গুণমানের মান হ্রাস করার কারণে কোনও ক্ষতি ছাড়াও ডিকম্প্রেসিং এবং পুনরায় সংক্ষেপণ করে কিছু গুণ হারাবেন।


4

এখানে কিছু আমার নিজের পরীক্ষা-নিরীক্ষা হয়েছে এবং ছেলেটি গাউসিয়ান ব্লারকে একটি আলাদা আলাদা করে তোলে। আমার ব্যবহৃত চূড়ান্ত আদেশটি ছিল:

মোগ্রিফি * -স্যাম্পলিং-ফ্যাক্টর 4: 2: 0 -স্ট্রিপ-গুণমান 88-অন্তর্ভুক্ত প্লেন -ডাইফাইন জেপিগ: ডিসিটি-মেথড = ফ্লোট-কালারস্পেস আরজিবি -গুশিয়ান-ব্লার 0.05

0.05 এ গাউসিয়ান অস্পষ্টতা ছাড়া এটি 261kb এর কাছাকাছি ছিল, এটির সাথে এটিতে আমি যে চিত্রটি পরীক্ষা করছি সেটির জন্য এটি 171KB এর কাছাকাছি ছিল। একটি বড় জটিল চিত্র সহ 1440p মনিটরে ভিজ্যুয়াল পার্থক্যটি আপনি যতক্ষণ প্রবেশ করবেন না ততক্ষণ তা লক্ষণীয় নয়।


নোট করুন যে গাউসিয়ান ব্লার ছোট চিত্রগুলির সাথে খারাপভাবে কাজ করে তবে একটি অবশ্যই বড় আকারের জন্য থাকতে পারে!
আন্তোনিন গ্যাভারিল

4

পিএইচপিতে ইমেজিক ব্যবহারকারীদের জন্য এখানে একটি সম্পূর্ণ সমাধান :

$im = new \Imagick($filePath);
$im->setImageCompression(\Imagick::COMPRESSION_JPEG);
$im->setImageCompressionQuality(85);
$im->stripImage();
$im->setInterlaceScheme(\Imagick::INTERLACE_PLANE);

// Try between 0 or 5 radius. If you find radius of 5 
// produces too blurry  pictures decrease to 0 until you 
// find a good balance between size and quality. 
$im->gaussianBlurImage(0.05, 5);



// Include this part if you also want to specify a maximum size for the images

$size = $im->getImageGeometry();
$maxWidth = 1920;
$maxHeight = 1080;


// ----------
// |        |
// ----------
if($size['width'] >= $size['height']){
  if($size['width'] > $maxWidth){
    $im->resizeImage($maxWidth, 0, \Imagick::FILTER_LANCZOS, 1);
  }
}


// ------
// |    |
// |    |
// |    |
// |    |
// ------
else{
  if($size['height'] > $maxHeight){
    $im->resizeImage(0, $maxHeight, \Imagick::FILTER_LANCZOS, 1);
  }
}

0

চিত্রটির যদি বড় মাত্রা থাকে তবে আকার পরিবর্তন না করে ভাল ফলাফল পাওয়া শক্ত, নীচে একটি percent০ শতাংশ পুনরায় আকার দেওয়া হচ্ছে যা বেশিরভাগ উদ্দেশ্যে চিত্রটি খুব বেশি ক্ষতিগ্রস্থ করে না।

আমি ধূসর-স্কেল চিত্রগুলির জন্য ভাল ফলাফলের সাথে এটি ব্যবহার করি (আমি পিএনজি থেকে রূপান্তর করি):

ls ./*.png | xargs -L1 -I {} convert {} -strip -interlace JPEG -sampling-factor 4:2:0 -adaptive-resize 60%   -gaussian-blur 0.05 -colorspace Gray -quality 20  {}.jpg

আমি এটি স্ক্যান করা বি ও ডাব্লুডাব্লু পৃষ্ঠাগুলি ধূসর-স্কেল চিত্রগুলিতে পাওয়ার জন্য ব্যবহার করি (অতিরিক্ত যুক্তি পূর্ববর্তী পৃষ্ঠাগুলির ছায়াগুলি পরিষ্কার করে):

ls ./*.png | xargs -L1 -I {} convert {} -strip -interlace JPEG -sampling-factor 4:2:0 -adaptive-resize 60%   -gaussian-blur 0.05 -colorspace Gray -quality 20 -density 300 -fill white -fuzz 40% +opaque "#000000" -density 300 {}.jpg 

আমি রঙিন চিত্রগুলির জন্য এটি ব্যবহার করি:

ls ./*.png | xargs -L1 -I {} convert {} -strip -interlace JPEG -sampling-factor 4:2:0 -adaptive-resize 60%   -gaussian-blur 0.05 -colorspace RGB -quality 20  {}.jpg 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.