function quantizeImage($imagePath, $numberColors, $colorSpace, $treeDepth, $dither)
{
$imagick = new \Imagick(realpath($imagePath));
$imagick->quantizeImage($numberColors, $colorSpace, $treeDepth, $dither, false);
$imagick->setImageFormat('png');
header("Content-Type: image/png");
echo $imagick->getImageBlob();
}
convert source.jpg -fill none -fuzz 1% -draw 'matte 0,0 floodfill' -flop -draw 'matte 0,0 floodfill' -flop dest.png
echo 'convert $1 -fill none -fuzz 1% -draw "matte 0,0 floodfill" -flop -draw "matte 0,0 floodfill" -flop ${1%.*}.png' > ~/convert.sh
chmod +x ~/convert.sh
cd ~/Pictures
find -name '*.jpg' | xargs -L1 -P8 ~/convert.sh
rm ~/convert.sh
function cal(y,m) {
let[t,r,d,w,l]=[v=>~~v,[],1,0,y%4],c=(t(23*m/9)+(m<3?y--:y-2)+5+t(y/4)-t(y/100)+t(y/400))%7;
for(;d<29+(62648012+16*!l>>m*2&3);++d,c=++c%7,w+=!c)(r[w]||(r[w]=[,,,,,,,]))[c]=d;return r
}
console.log(cal(2020,8));
[
[ , , , , , , 1 ],
[ 2, 3, 4, 5, 6, 7, 8 ],
[ 9, 10, 11, 12, 13, 14, 15 ],
[ 16, 17, 18, 19, 20, 21, 22 ],
[ 23, 24, 25, 26, 27, 28, 29 ],
[ 30, 31, , , , , ]
]
function cal(y,m) {
let[t,r,d,w,l]=[v=>~~v,[],1,0,y%4],c=(t(23*m/9)+(m<3?y--:y-2)+5+t(y/4)-t(y/100)+t(y/400))%7||7;
for(;d<29+(62648012+16*!l>>m*2&3);++d,c=++c%7||7,w+=!(c-1))(r[w]||(r[w]=[,,,,,,,]))[c-1]=d;return r
}
console.log(cal(2020,8));
[
[ , , , , , 1, 2 ],
[ 3, 4, 5, 6, 7, 8, 9 ],
[ 10, 11, 12, 13, 14, 15, 16 ],
[ 17, 18, 19, 20, 21, 22, 23 ],
[ 24, 25, 26, 27, 28, 29, 30 ],
[ 31, , , , , , ]
]
ducment.querySelector('form').addEventListener('submit',(e)=>{
/* Здесь можно читать значения элементов форм */
// с файлами так
let file = document.forms['formName']['avatar'].files[0];
//file.name == "photo.png"
//file.type == "image/png"
//file.size == 300821
// Если нужно остановить отправку формы, надо выполнить эти две строчки
e.preventDefault();
e.stopPropagation();
});
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt');
Когда вы делаете запрос и хотите чтобы curl передал серверу эти сохраненные куки, вы пишете вот это:curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');
if('krd.site.ru' == location.hostname){
document.querySelector('#address').innerHTML="Мой адрес не дом и не улица";
}
else if('spb.site.ru' == location.hostname){
document.querySelector('#address').innerHTML="WWW.LENINGRAD.SPB.RU";
}
<div class="good-list">
<!-- * * * другие товары * * * -->
<div class="good-item">
<!-- * * * инфа по товару * * * -->
<input class="good-id" type="hidden" value="345736">
<button class="add">add</button>
</div>
<!-- * * * другие товары * * * -->
</div>
[...document.querySelectorAll('.good-list > .good-item > button.add')].forEach(btn => {
btn.addEventListener('click', e => {
let thisBtn = e.target; // Кнопка, которую нажали
let thisGood = thisBtn.closest('.good-item'); // div со всей информацией товара
let thisHiddenInput = thisGood.querySelector('.good-id'); // скрытый input с id товара
let thisID =parseInt( thisHiddenInput.getAttribute('value') ); // сам id товара
console.log(thisID);
});
});
window.addEventListener("load", e=> { /* страница полностью загрузилась во вкладку */ });
window.addEventListener("unload", e=> { /* пользователь закрыл вкладку */
/* (или пытается закрыть вкладку, так как это действие можно отменить)*/ });
window.addEventListener("focus", e=> { /* пользователь переключился на нашу вкладку */ });
window.addEventListener("blur", e=> { /* пользователь переключился на другую вкладку */ });
window.addEventListener("error", e=> { /* у пользователя произошла ошибка */ });