2009-06-26 15 views
6

मेरे पास ऐसी छवियों से भरा एक निर्देशिका है जिसे मैं अपने मूल आकार के लगभग 60% का आकार बदलना चाहता हूं।निर्देशिका में छवियों का आकार बदलें

मैं यह करने के बारे में कैसे जाउंगा? या तो Python या perl

चीयर्स

EEF

+0

मुझे यकीन नहीं है। सबसे पहले - यह नहीं कहता कि यह एक बार नौकरी है। दूसरा - "इरफान व्यू" एक विकल्प नहीं हो सकता है - उदाहरण के लिए ऑपरेटिंग सिस्टम की बाधाओं के कारण। तीसरा - ImageMagick इतना जटिल है, कि इसे बैच टूल के रूप में भी उपयोग करना प्रोग्रामिंग की तरह है। –

उत्तर

11

ImageMagick का हिस्सा, mogrify का उपयोग करने के बारे में कैसे? यदि आपको वास्तव में पर्ल से इसे नियंत्रित करने की आवश्यकता है, तो आप Image::Magick, Image::Resize या Imager का उपयोग कर सकते हैं।

1

मैं जनहित याचिका (अजगर छवि पुस्तकालय) के साथ अजगर का उपयोग में हो सकता है। बेशक ऐसा करने के लिए विशेष कार्यक्रम हैं।

कई लोग ऐसी चीजों को पीआईएल का उपयोग करते हैं। देखो पर: Quick image resizing with python

जनहित याचिका बहुत शक्तिशाली है और हाल ही में मैं यह नुस्खा मिल गया है: Putting watermark to images in batch

2

उपयोग PerlMagick, यह कमांड लाइन उपकरण के लोकप्रिय ImageMagick सूट के लिए एक इंटरफेस है सामान का सिर्फ इस तरह करते हैं। PythonMagic भी उपलब्ध है।

0

क्या आपको इसे आकार देने की आवश्यकता है या आप प्रोग्रामेटिक रूप से आकार बदलना चाहते हैं? यदि बस PixResizer का उपयोग आकार बदलें। http://bluefive.pair.com/pixresizer.htm

10

क्या यह खोल में हो सकता है?

mkdir resized 
for a in *.jpg; do convert "$a" -resize 60% resized/"$a"; done 

यदि आपके पास> 1 कोर, आप इसे इस प्रकार कर सकते हैं:

find . -maxdepth 1 -type f -name '*.jpg' -print0 | xargs -0 -P3 -I XXX convert XXX -resize 60% resized/XXX 

-P3 मतलब यह है कि आप एक ही समय (बनता है) पर 3 छवियों के लिए ऊपर आकार बदलने के लिए चाहते हैं।

यदि आपको मूल रखने की आवश्यकता नहीं है तो आप mogrify का उपयोग कर सकते हैं, लेकिन मैं कन्वर्ट का उपयोग करना पसंद करता हूं, और फिर आरएम ...; एमवी ... - आकार बदलने पर सुरक्षित पक्ष पर होना (किसी भी कारण से) असफल हो जाता है।

+0

इसके लिए धन्यवाद, यह वही था जो मैं खोज रहा था। –

18

यदि आप इसे प्रोग्रामिक रूप से करना चाहते हैं, जो मुझे लगता है कि मामला है, उदाहरण के लिए पीआईएल का उपयोग करें।

newIm = im.resize((newW, newH) 

फिर इसे उसी फ़ाइल या एक नए स्थान पर सहेजें।

फ़ोल्डर के माध्यम से दोबारा जाएं और सभी छवियों में आकार बदलें आकार लागू करें।

मैं एक नमूना स्क्रिप्ट के साथ आया हूं जो मुझे लगता है कि आपके लिए काम करेगा। आप इसमें सुधार कर सकते हैं: शायद इसे ग्राफिकल बनाएं, अधिक विकल्प जोड़ें उदा। एक ही एक्सटेंशन या सभी पीएनजी हो सकता है, नमूना रैखिक/बिलीनेर आदि का आकार बदलें

import os 
import sys 
from PIL import Image 

def resize(folder, fileName, factor): 
    filePath = os.path.join(folder, fileName) 
    im = Image.open(filePath) 
    w, h = im.size 
    newIm = im.resize((int(w*factor), int(h*factor))) 
    # i am saving a copy, you can overrider orginal, or save to other folder 
    newIm.save(filePath+"copy.png") 

def bulkResize(imageFolder, factor): 
    imgExts = ["png", "bmp", "jpg"] 
    for path, dirs, files in os.walk(imageFolder): 
     for fileName in files: 
      ext = fileName[-3:].lower() 
      if ext not in imgExts: 
       continue 

      resize(path, fileName, factor) 

if __name__ == "__main__": 
    imageFolder=sys.argv[1] # first arg is path to image folder 
    resizeFactor=float(sys.argv[2])/100.0# 2nd is resize in % 
    bulkResize(imageFolder, resizeFactor) 
संबंधित मुद्दे