Olá a todos me deparei com um pequeno problema irritante. Eu estou usando um código PHP parecido com este:
$image = imagecreatefromjpeg($imagem);
imagewebp($image, $caminho_do_diretório/exemplo.webp, 100);
Para fazer a conversão de JPEG ou PNG para webp.
Porém algumas imagens, não sei se é dimensionamento ou outro fator. Por vezes fica em branco depois da conversão.
Eu já coloque em um if porque o retorno da função imagewebp é um boolean, fiz tratamento de exeção e não consigo capturar qual é o erro.
Se alguém já tiver passado por algo parecido e puder me dar uma luz. Ficaria muito grato.
bom-dia pessoal, não tenho conhecimento para fazer essa conversão ou deixar compatível, se alguém puder por favor fazer isso pra mim ficarei agradecido de coração.
meu problema é o código abaixo que está usando biblioteca do windows WINSOCK2.H para fazer um ping no ip fornecido por um comando ping("ip") e retornar uma msg igual ao ping do windows, gostaria se possível que o mesmo fosse utilizado em linux (centos) mantendo a mesma funcionalidade ?
ping.c
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include <WINSOCK2.H>
#define DEF_BUF_SIZE 1024
#define IP_HEADER_SIZE 20
#define ICMP_HEADER_SIZE 12
typedef struct _ICMP_HEADER
{
BYTE bType;
BYTE bCode;
USHORT nCheckSum;
USHORT nId;
USHORT nSequence;
UINT nTimeStamp;
}ICMP_HEADER, *PICMP_HEADER;
USHORT GetCheckSum(LPBYTE lpBuff, DWORD dwSize)
{
DWORD dwCheckSum = 0;
USHORT* lpWord = (USHORT*)lpBuff;
while(dwSize > 1)
{
dwCheckSum += *lpWord++;
dwSize -= 2;
}
if(dwSize ==1)
dwCheckSum += *((LPBYTE)lpBuff);
dwCheckSum = (dwCheckSum >> 16) + (dwCheckSum & 0XFFFF);
return (USHORT)(~dwCheckSum);
}
BOOL Ping(char* lpDestIP, int *nRet_, int *nTime_)
{
int nTime = 0;
int ret = 0;
char ICMPPack[ICMP_HEADER_SIZE] = {0};
char szRcvBuff[DEF_BUF_SIZE] = {0};
int i = 0;
int nRet = 0;
int nLen = 0;
int nError = 0;
SOCKET s;
PICMP_HEADER pRcvHeader;
SOCKADDR_IN SourceSockAddr;
SOCKADDR_IN DestSockAddr;
PICMP_HEADER pICMPHeader;
DestSockAddr.sin_family = AF_INET;
DestSockAddr.sin_addr.S_un.S_addr = inet_addr(lpDestIP);
DestSockAddr.sin_port = htons(0);
pICMPHeader = (PICMP_HEADER)ICMPPack;
pICMPHeader->bType = 8;
pICMPHeader->bCode = 0;
pICMPHeader->nId = (USHORT)GetCurrentProcessId();
pICMPHeader->nCheckSum = 0;
pICMPHeader->nTimeStamp = 0;
s = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
nTime = 1000;
ret = setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (char*)&nTime, sizeof(nTime));
for(i=0; i <1; i++)
{
pICMPHeader->nCheckSum = 0;
pICMPHeader->nSequence = i;
pICMPHeader->nTimeStamp = GetTickCount();
pICMPHeader->nCheckSum = GetCheckSum((LPBYTE)(ICMPPack), ICMP_HEADER_SIZE);
nRet = sendto(s, ICMPPack, ICMP_HEADER_SIZE, 0, (SOCKADDR*)&DestSockAddr, sizeof(DestSockAddr));
if(nRet == SOCKET_ERROR)
{
return FALSE;
}
nLen = sizeof(SOCKADDR_IN);
if(nRet == SOCKET_ERROR)
{
return FALSE;
}
nRet = recvfrom(s, szRcvBuff,DEF_BUF_SIZE,0,(SOCKADDR*)&SourceSockAddr,&nLen);
if(nRet == SOCKET_ERROR)
{
return FALSE;
}
pRcvHeader = (PICMP_HEADER)(szRcvBuff + IP_HEADER_SIZE);
nTime = GetTickCount() - pRcvHeader->nTimeStamp;
//printf("Return Message: %s bytes=%d time=%dms\n", inet_ntoa(SourceSockAddr.sin_addr), nRet, nTime);
*nRet_ = nRet;
*nTime_ = nTime;
}
return TRUE;
}
a outra estrutura:
#include "ping.c"
BUILDIN_FUNC(ping) {
//
const char *name;
char _cmd[500];
int nRet=0, nTime=0;
//
//
name = script_getstr(st,2);
Ping((char *)name, &nRet, &nTime);
if( nRet <= 0 || nTime < 0 )
sprintf(_cmd,"Return Message: %s fail to connect", (char *)name);
else
sprintf(_cmd,"Return Message: %s bytes=%d time=%dms\n", (char *)name, nRet, nTime);
//
script_pushstrcopy(st, _cmd);
return 0;
}
BUILDIN_DEF(ping,"s")
Desde já muito obrigado, fiz algumas buscas mas não achei nada que possa me ajudar a fazer essa conversão ou até mesmo redigir o código para funcionar em linux.
Olá, estou fazendo um programa q converta numeros em base decimal para bases de 5,7 e 9. Para isso, ao utilizar uma variavel r (resto), para as consecutivas divisões do numero em 5,7 ou 9, não sei como enviar para uma unica variavel, essa sequencia de restos. Por exemplo, o numero convertido 437 fica 3222 em base 5 e são a sequencia dos restos das consecutivas divisões, porem, não consigo armazenar em uma unica variavel, não posso usar vetor ou outros comandos como chair. Basicamente, posso usar while, if e for. Em baixo está o começo do meu programa, falta bastante coisa e só coloquei a parte de conversão para base 5 (que claramente não esta funcionando). Obrigada desde já!!
#include <stdio.h>
int main ()
{ int n, i, num, a, r,b;
printf ("Digite a quantidade n de numeros a serem convertidos:");
scanf ("%d", &n);
for (i=0; i<n; i++)
{
printf ("Digite um numero a ser convertido:");
scanf ("%d", &b);
for ( a=b, cont=0; a>=5; a=a/5,cont++)
r=a%5;
Pois bem, eu tenho uma página no sistema que exibe tarefas conforme as datas, e a cada dia, ele mostra a data e todas as tarefas.
Na hora de imprimir a data, ele está imprimindo certinho, no caso, o formato br --/--/----
Porém, eu necessito também mostrar o dia da semana que corresponde aquele dia, por exemplo: 23/02/2018 - Sexta Feira
Bom, estou convertendo um código, script AutoIT para PHP a algum tempo, porém, cheguei em um ponto que não consigo resolver um problema, eu não consigo executar a conversão desta linha:
$VAL = HEX(BITXOR(DEC($VAL), DEC($X[$IX])), 2)
Devido a meu baixo conhecimento em PHP, não conheço algumas funções da linha, se possível, solicito ajuda para fazer tal conversão.