1. 程式人生 > >python批量按比例縮放圖片

python批量按比例縮放圖片

把指令碼檔案放在要縮放的資料夾下面。

雙擊執行指令碼,輸入要縮放的係數。指令碼會在當前目錄下建立一個scaledImg_xxxx資料夾,如果已經存在,會強制刪除,如果刪除失敗會提示手動刪除這個資料夾,再雙擊執行就可以了。

resizeImg.py

#!/usr/bin/python
# -*- coding:utf8 -*-

#[email protected] www.

import os
import shutil
import Image  
to_scale = 0.5
processIndex = 0
def resizeImg(imgPath):
    global processIndex
    fileList = []
    files = os.listdir(imgPath)
    for f in files:
        filePath = imgPath + os.sep + f
        if(os.path.isfile(filePath)):
            fileList.append(f)
        elif(os.path.isdir(filePath)):
            resizeImg(filePath)
    for fileName in fileList:
        processIndex+=1
        fileFullName = imgPath+os.sep+fileName
        suffix = fileName[fileName.rfind('.'):]
        if(suffix == '.png' or suffix == '.jpg'):
            print 'processing the '+str(processIndex)+'th file:'+fileFullName
            img = Image.open(fileFullName)
            w,h = img.size
            tw = int(w * to_scale)
            th = int(h * to_scale)
            reImg = img.resize((tw,th),Image.ANTIALIAS)
            reImg.save(fileFullName)
            del reImg
if __name__ == '__main__':
    scaleStr = raw_input('input to_scale: ')
    to_scale = float(scaleStr)
    scaledPath = '.\\scaledImg_xxxx';
    if os.path.isdir(scaledPath):
        flag = raw_input('the output dir is exist, sure to del it(y/n)')
        if flag == 'y' or flag == 'yes':
            try:   
                shutil.rmtree(scaledPath)
            finally:
                raw_input('remove dir failed , please removed the dir manually.')
        else:
            exit
    shutil.copytree('.\\',scaledPath)   
    resizeImg(scaledPath)
    raw_input("resize success")

生成Icon

generateIcon.py

#!/usr/bin/python
# -*- coding:utf8 -*-

#[email protected] www.

import os
import shutil
import Image  
def resizeImg(imgPathName):
    print imgPathName
    iconDict = {'Icon.png':'72x72','[email protected]':'144x144','Icon-29.png':'29x29','Icon-40.png':'40x40','Icon-50.png':'50x50',
    'Icon-57.png':'57x57', 'Icon-58.png':'58x58','Icon-72.png':'72x72','Icon-76.png':'76x76','Icon-80.png':'80x80',
    'Icon-100.png':'100x100','Icon-114.png':'114x114','Icon-120.png':'120x120','Icon-144.png':'144x144','Icon-152.png':'152x152',
    'FlipCycleTileLarge.png':'300x300','FlipCycleTileMedium.png':'300x300','FlipCycleTileSmall.png':'300x300',
    'IconicTileMediumLarge.png':'300x300','IconicTileSmall.png':'300x300','ApplicationIcon.png':'300x300','icon.png':'72x72'}
    if  os.path.isfile(imgPathName) == False:
        print('open imgPathName failed , check the' + imgPathName + "is exist!")
        exit
    img = Image.open(imgPathName)
    index = imgPathName.rfind(os.sep)
    prefix = imgPathName[:index+1]
    for key, value in iconDict.items():
        # print key,value
        v_split = value.split('x')
        w,h = int(v_split[0]),int(v_split[1])
        fileName = prefix + key
        reImg = img.resize((w,h),Image.ANTIALIAS)
        reImg.save(fileName)
        print fileName,w,h
    del img
if __name__ == '__main__':
    scaledPath = '.\\createIcon'
    if os.path.isdir(scaledPath):
        flag = raw_input('the output dir is exist, sure to del it(y/n)')
        if flag == 'y' or flag == 'yes':
            try:   
                shutil.rmtree(scaledPath)
            finally:
                raw_input('remove dir failed , please removed the dir manually.')
        else:
            exit
    shutil.copytree('.\\',scaledPath)  
    fileList = []
    files = os.listdir(scaledPath)
    for f in files:
        filePath = scaledPath + os.sep + f
        if os.path.isfile(filePath) :
            suffix = filePath[filePath.rfind('.'):]
            if(suffix == '.png' or suffix == '.jpg'):
                print filePath
                resizeImg(filePath)
                break
    raw_input("resize success")



相關推薦

python批量比例圖片

把指令碼檔案放在要縮放的資料夾下面。 雙擊執行指令碼,輸入要縮放的係數。指令碼會在當前目錄下建立一個scaledImg_xxxx資料夾,如果已經存在,會強制刪除,如果刪除失敗會提示手動刪除這個資料夾,再雙擊執行就可以了。 resizeImg.py #!/usr/bin/p

Fresco比例圖片

<com.facebook.drawee.view.SimpleDraweeView android:id="@+id/story_image" android:layout_width="fill_parent" android:layout_height="wr

淺談Android根據螢幕寬度,比例圖片

mageView有scaleType屬性可以縮放圖片,讓圖片鋪滿螢幕寬度,但是會出現壓縮或裁剪的情況。 ImageView的scaleType的屬性分別是matrix(預設)、center、centerCrop、centerInside、fitCenter、fitEnd、f

在一定範圍裡,比例圖片,優化展示效果

在listview中,每個條目有一張圖片,圖片的大小是隨機的,怎麼展示才能美觀。很多人用的方法是,在ImageView中,加屬性 android:adjustViewBounds="true" android:maxHeight="300d

[Xcode10 實際操作]六、媒體與動畫-(1)使用圖形上下文一定比例圖片

本文將演示如何通過圖形上下文,來實現圖片縮放的功能. 在專案導航區,開啟檢視控制器的程式碼檔案【ViewController.swift】 1 import UIKit 2 3 class ViewController: UIViewController { 4 5 o

6、js控制,設定圖片跟隨視窗(主要是根據高度變化)大小變化,比例

html: <div class="container"> <img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1545633786675&a

Android imageView圖片比例

android:scaleType可控制圖片的縮放方式,示例程式碼如下: <ImageViewandroid:id="@+id/img"     android:src="@drawable/logo"     android:scaleType="ce

iOS 圖片處理方法(比例,指定寬度比例)

今天遇見的處理圖片的問題,一張圖片上下兩個部分都有一個空白區域,就中間是圖片。要求是不能讓他顯示上下    有空白問間距。這是測試提出來的問題,但是圖片本身就是這個毛病。無奈,哥哥改。誰有好的方法推薦推薦推薦      啊!!!    兩個方法如下    建議讓這兩個

css 網站大背景(比例背景圖片

很多網站是全背景圖片的,而且適應各種主流解析度,給人一種乾淨大氣的感覺,實屬設計派的一個耍酷良方,下面介紹幾種實現全屏圖片自適應縮放背景圖片的方法。 1.帥氣簡單的CSS3方法 html { background: url(images/bg.

圖片寬度為控制元件寬度,高度比例

圖片寬度固定,高度按比例縮放自適應 本身不知道圖片寬度和高度  首先,定義ImageView,在該ImageView中,我們需要設定屬性android:adjustViewBounds="t

vue實現圖片比例問題

getImg(src){ var img_url =src var img = new Image() img.src=img_url this.pictureHeight.height = Math.ceil(img.height/img.width *

ImageView圖片寬度為控制元件寬度,高度比例

寫在前面:本篇文章使用了非同步圖片載入庫Android-Universal-Image-Loader,如果你的專案不使用此庫,本文提供的方法就不能解決你的問題了。 需求說明:顯示多張圖片,每張圖片大小不定,要求圖片顯示寬度為ImageView的寬度,高度按比例縮放,能

比例圖片(C#)

col ID try ima 畫布 drawing key sta ati private Bitmap ZoomImage(Bitmap bitmap, int destHeight, int destWidth) { try {

【Thumbnailator】java 使用Thumbnailator實現等比例圖片,旋轉圖片等【轉載】

strong class chm eight load angle true api ins Thumbnailator概述: Thumbnailator是與Java界面流暢的縮略圖生成庫。它簡化了通過提供一個API允許精細的縮略圖生成調整生產從現有的圖

PHP等比例圖片大小壓縮圖片空間

/** * 等比例壓縮圖片,支援圖片格式jpg,jpeg,png * @param string $dst_dir 上傳的資料夾 * @param string $dst_name 上傳後的名稱,不包括副檔名 * @param int $maxWidth 如果需要等比

JS等比例圖片,限定最大寬度和最大高度

JavaScript //圖片按比例縮放 var flag=false; function DrawImage(ImgD,iwidth,iheight){ //引數(圖片,允許的寬度,允許的高度) var image=new Image(); image.src=ImgD.src

android等比例圖片

// 縮放圖片public static Bitmap zoomImg(String img, int newWidth ,int newHeight){// 圖片源   Bitmap bm = BitmapFactory.decodeFile(img);   if(nul

【移動端元素比例】用Padding-buttom撐開高度

 1、在說容器按比例縮放前,我們先說下圖片按比例縮放。 對於圖片,預設只設置圖片的一個寬或高,那麼另一個值就會按照圖片真實比例縮放。 圖片因為本身存在寬高比,所以設定一個值,另一個值自動也就根據真實的比例對應上,但是如果是視訊、div元素等元素則沒有這個屬性。 一般在響

比例的geoserver組合樣式編寫

在編寫地圖樣式的時候可以根據地圖資料的某個屬性決定要顯示的圖示樣式,根據地圖比例尺決定地圖圖示的大小。但是如何既根據屬性顯示圖示樣式同時又根據比例尺決定圖示大小呢? 正常的邏輯肯定是雙層for迴圈的思路,即兩層<rule>。但是用這種方式geoserver會報錯

Android 設定ImageView寬度固定,其高度比例適應

今天和專案經理對噴了一下,他說在應用的列表資料中的圖片應該寬度固定,高度按比例縮放自適應,我說,那豈不是很醜!直接讓運營那邊把圖片處理成固定寬高比不就好了,省的我客戶端麻煩了。 這傢伙不同意,為毛呢,因為我們公司的圖片尼瑪全部是從別的網站上蕩過來的,幾萬張圖片,本身不知道