Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Отдельно отмечу, что я буду намеренно немного усложнять реализацию, чтобы показать больше возможностей PowerShell. В реальных условиях что-то можно упростить, а от чего-то вообще избавиться.
Copy Source | Copy HTML
- [void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
-
- $source = "x:\source"
- $target = "x:\target"
-
- foreach ($file in dir $source -r -inc *.jpg, *.gif, *.png) {
- try {
- $image = new-object System.Drawing.Bitmap $file.FullName
- $targetdir = "{0}\{1}x{2}" -f $target, $image.Width, $image.Height
- if (!(test-path $targetdir)) {
- md $targetdir
- }
- copy $file $targetdir
-
- Write-Host $file -> $targetdir
- } catch {
- Write-Host $file " **IS NOT COPIED**"
- }
- }
-
sort(find((dir /b folder1\*.txt && dir /b folder2\*.txt), «text»))
Copy Source | Copy HTML
- var Source = "x:\\source";
- var Target = "x:\\target";
-
- var Fso = new ActiveXObject("scripting.FileSystemObject");
- var Image = new ActiveXObject("Wia.ImageFile");
-
- function foreach(Collection, Proc) {
- for (var enumerator = new Enumerator(Collection); !enumerator.atEnd(); enumerator.moveNext())
- Proc(enumerator.item());
- }
-
- function SortImages(Folder) {
- foreach(Folder.Files, function (file) {
- try {
- Image.LoadFile(file);
- var targetPath = Target + "\\" + Image.Width + "x" + Image.Height + "\\";
- if (!Fso.FolderExists(targetPath)) {
- Fso.CreateFolder(targetPath);
- }
- Fso.CopyFile(file, targetPath);
- WSH.Echo(file + " -> " + targetPath);
- } catch (e) {
- WSH.Echo(file + " **WAS NOT COPIED**");
- }
- });
- foreach(Folder.SubFolders, SortImages);
- }
-
- SortImages(Fso.GetFolder(Source));
-
Wscript.echo([1,].length)
>cscript /nologo 1.js
2
плохо в powershell — очень длинные имена классов из .net(в visualstudio от этого должно как-то спасать автодополнение, а в powershell?)
чем не объект? далее мы просто вырезаем интересующую строчку gm identify -verbose cole-gerst-blog.jpg |grep Geometry|cut -d: -f2
Copy Source | Copy HTML
- ls *.jpg | foreach {
- $image = new-object System.Drawing.Bitmap $_.FullName;
- $graphic = [System.Drawing.Graphics]::FromImage($image);
- $graphic.DrawLine(...);
- $graphic.FillPolygon(...);
- $graphic.DrawString(...);
- $image.Save(...)
- }

в моем примере было gm identify -verbose, а не gm identify
xargs -n1 gm identify
&& next_actionтоже нет
from ipipe import *
import Image
for name,img in iwalk(dirs=False) | ieval('_.basename(),Image.open(_)',errors='drop'):
img.resize((img.size[0]/2,img.size[1]/2)).save('/tmp/'+name)
from ipipe import * import Image, os, shutil for img in iwalk(dirs=False) | ieval(Image.open, errors='drop'): path = '%dx%d' % img.size if not os.path.exists(path): os.makedirs(path) shutil.copyfile(img.filename, path)
from ipipe import *
import gtk, os, shutil
for f,img in filter(iwalk(dirs=False) | ieval('_,gtk.gdk.pixbuf_get_file_info(_)'):
path = '%dx%d' % (img[1],img[2])
if not os.path.exists(path): os.makedirs(path)
shutil.copyfile(f, path)
Сортировка изображений по разрешению… на сцене PowerShell